如何制作重定向和提交表单的 link_to
How to make a link_to that redirects and submits a form
我有一个模态将在我的应用程序中用作免责声明,我需要模态底部的 link 表示 "agree & continue" 来切换布尔值并输入时间布尔值被切换。我已将按钮创建为带有隐藏 links 的表单,但我似乎看不到如何使其提交表单并重定向到我指定的路径。这是我的 link_to 代码。
<% if current_user.user_record.blank? %>
<%= form_for :user do |f| %>
<% f.hidden_field :disclosure_acceptance, :value => true %>
<% f.hidden_field :disclosure_date, :value => Time.now %>
<%= link_to("Agree & Continue", user_steps_path(current_user), class: "btn btn-primary") %>
<% end %>
<% end %>
首先,在您的 user_records_controller 或表单显示的任何控制器操作中创建一个 new
方法:
def new
@user_record = current_user.build_user_record
end
把这个放在你的视图中:
<% if current_user.user_record.blank? %>
<%= form_for @user_record do |f| %>
<%= f.hidden_field :disclosure_acceptance, :value => true %>
<%= f.hidden_field :disclosure_date, :value => Time.now %>
<%=f.submit "Agree & Continue", class: "btn btn-primary") %>
<% end %>
<% end %>
为 user_record
创建一个如下所示的操作:
def create
@user_record = current_user.build_user_record(permitted_params)
if @user_record.save
redirect_to user_steps_path(current_user)
else
render :new
end
end
private
def permitted_params
params.require(:user_record).permit(:disclosure_acceptance , :disclosure_date) #etc
end
更新
如果你想直接跳转到'create'动作,你可以这样配置:
向您的路线添加自定义操作:
post 'rate/:article_id' => 'user_records#create' :as => :create_user_record
#or whichever controller/action you wish
您应该更新表单上的路线:
= form_tag create_user_record_path, :method=>'post' do
#etc
为了从控制器创建一个 user_record,您需要稍微改变一下:
def create
current_user.user_record.create(:user_id => current_user.id, :disclosure_acceptance => params[:disclosure_acceptance] , :disclosure_date => params[:disclosure_date])
if current_user.user_record.save
#etc
end
我有一个模态将在我的应用程序中用作免责声明,我需要模态底部的 link 表示 "agree & continue" 来切换布尔值并输入时间布尔值被切换。我已将按钮创建为带有隐藏 links 的表单,但我似乎看不到如何使其提交表单并重定向到我指定的路径。这是我的 link_to 代码。
<% if current_user.user_record.blank? %>
<%= form_for :user do |f| %>
<% f.hidden_field :disclosure_acceptance, :value => true %>
<% f.hidden_field :disclosure_date, :value => Time.now %>
<%= link_to("Agree & Continue", user_steps_path(current_user), class: "btn btn-primary") %>
<% end %>
<% end %>
首先,在您的 user_records_controller 或表单显示的任何控制器操作中创建一个 new
方法:
def new
@user_record = current_user.build_user_record
end
把这个放在你的视图中:
<% if current_user.user_record.blank? %>
<%= form_for @user_record do |f| %>
<%= f.hidden_field :disclosure_acceptance, :value => true %>
<%= f.hidden_field :disclosure_date, :value => Time.now %>
<%=f.submit "Agree & Continue", class: "btn btn-primary") %>
<% end %>
<% end %>
为 user_record
创建一个如下所示的操作:
def create
@user_record = current_user.build_user_record(permitted_params)
if @user_record.save
redirect_to user_steps_path(current_user)
else
render :new
end
end
private
def permitted_params
params.require(:user_record).permit(:disclosure_acceptance , :disclosure_date) #etc
end
更新
如果你想直接跳转到'create'动作,你可以这样配置: 向您的路线添加自定义操作:
post 'rate/:article_id' => 'user_records#create' :as => :create_user_record
#or whichever controller/action you wish
您应该更新表单上的路线:
= form_tag create_user_record_path, :method=>'post' do
#etc
为了从控制器创建一个 user_record,您需要稍微改变一下:
def create
current_user.user_record.create(:user_id => current_user.id, :disclosure_acceptance => params[:disclosure_acceptance] , :disclosure_date => params[:disclosure_date])
if current_user.user_record.save
#etc
end