Ruby on Rails我有两个表单,如何在另一个表单中移动一个表单的提交标签?

我有两种forms:

= form_for @form_one, :url => form_path do |f| = f.hidden_field :promotion_id = f.label :page_title, 'After Like: Page Title' = f.submit 'Update', :class => 'smBlueButton' = render :partial => 'form_two' 

如何从表单2下面的表单1移动提交标记,表单2的提交标记在表单1之前显示?

这不起作用:

  = form_for @form_one, :url => form_path do |f| = f.hidden_field :promotion_id = f.label :page_title, 'After Like: Page Title' = render :partial => 'form_two' = f.submit 'Update', :class => 'smBlueButton' 

有2个提交标签很好,但你只能有一个表格。 提交标记将回发到form_for声明中定义的表单控制器操作。 您需要在控制器操作中执行的操作是检查提交参数(params[:commit] )以获取按钮文本的值,并在基于该值的条件中相应地执行操作。

所以从部分2中删除form_for(也许可以在这里使用fields_for),将提交按钮移动到form1,无论你想要它,并检查commit params hash是否适当的值

例如

 def update if params[:commit] == 'Update form 1' #do something elsif params[:commit] == 'Update form 2' #do something else else #Rails an error - You have not set the right values in your form submit buttons end end 

最好使用i18n作为按钮文本和控制器逻辑来测试按钮文本然后你可以自由地将按钮文本更改为你想要的任何内容而不会弄乱你在控制器中的检查