我有两个表单,我如何将一个表单的提交标签移动到另一个表单中



我有两种形式:

= 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'

如何将提交标签从表单1移动到表单2下面,其中表单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'

有两个提交标签是可以的,但是你只能有一个表单。提交标签将发送回form_for声明中定义的表单控制器动作。在控制器操作中,您所需要做的就是检查提交参数((params[:commit])中按钮文本的值,并根据该值在一个条件中执行相应的操作。

因此,从部分2中删除form_for(也许这里可以使用fields_for),将提交按钮移动到form1,无论您想要它,并检查提交参数哈希值是否合适

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作为按钮文本和控制器逻辑来测试按钮文本然后你可以自由地将按钮文本更改为你想要的任何内容而不会弄乱你在控制器

中检查的内容

最新更新