如何创建一个重定向和提交表单的link_to

时间:2015-09-03 20:54:23

标签: ruby-on-rails button link-to

我有一个模式可以作为我的应用程序中的免责声明,我需要在模式底部的链接,说明"同意&继续"切换布尔值并输入布尔值切换的时间。我已经创建了按钮作为具有隐藏链接的表单,但我似乎无法看到如何使其提交表单并重定向到我指定的路径。这是我的link_to代码。

this.m20 = this.m00 * f20 + this.m10 * f21 + this.m20 * f22

1 个答案:

答案 0 :(得分:1)

首先,在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

<强>更新

如果您直接想要跳转到“创建”&#39;动作,您可以像这样进行配置:  为您的路线添加自定义操作:

  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