在我的案例中使用相同的形式部分创建和编辑新建和预览.部分看起来有点像这样(我使用HAML)
=form_tag ({:action => params[:action]}, :multipart => true) =text_field :newsletter, :title =text_area :newsletter, :body =file_field :newsletter,:attachment -if params[:action] == "preview" =button_to "select contacts and send", :action => "contacts" =submit_tag "save and preview"
但在html输出中
... ...
为什么button_to没有生成按钮形式?
一个解决方案是将按钮保持在局部外,每个窗体只有1个,但是如何在同一个窗体中有2个按钮?
编辑:另一个解决方法是隐藏的复选框,如果按下button_to,则由javascript设置并提交表单,在控制器中将它们分开
HTML实际上不允许嵌套表单.有些浏览器会这样做,但在其他浏览器中会看到一些疯狂的行为 您是在显示原始输出的HTML还是来自firebug的计算DOM?
处理此案例的首选方法是将您的button_to
外部移到另一个表单.如果您对仅使用JS的选项很酷,则可以使用link_to :method => :post
链接并将其设置为按钮.