Ruby on rails =按钮_to如果已在其他表单中,则不生成表单

Ruby on rails =按钮_to如果已在其他表单中,则不生成表单,ruby-on-rails,forms,haml,Ruby On Rails,Forms,Haml,在“创建”和“编辑”(在我的案例中为“新建”和“预览”)中使用相同的部分表单。 分部看起来有点像这样(我使用HAML) 但是在html输出中 ... <input type="submit" value="select contacts and send"/> <input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> <i

在“创建”和“编辑”(在我的案例中为“新建”和“预览”)中使用相同的部分表单。 分部看起来有点像这样(我使用HAML)

但是在html输出中

...
<input type="submit" value="select contacts and send"/>
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/>
<input type="submit" value="save and preview" name="commit"/>
...
。。。
...
为什么按钮不生成要形成的按钮

一个解决方案是将按钮保持在分部之外,并且每个表单仅1个, 但是我怎么能有两个相同形式的按钮呢

编辑:
另一个解决方法是,如果按下按钮并提交表单,javascript会设置一个隐藏复选框,在控制器中将它们分开。HTML实际上不允许嵌套表单。有些浏览器确实如此,但你会在其他浏览器中看到一些疯狂的行为。您显示的HTML是原始输出还是firebug计算的DOM

处理此情况的首选方法是将
按钮移动到另一个表单之外的
。如果你对只使用JS的选项很酷,你可以使用
link\u to:method=>:post
,并将链接设计成按钮的样式。

最后使用了

:name => 'otheraction'
在控制器中,然后检查

params[:commit] or params[:otheraction]

在params散列中

我构建了一个名为
按钮链接到的gem

使用button_link_to方法将生成button标记,但没有嵌套的by form标记

就像使用链接一样使用它

您可以从这里获得更多信息:

如果您想观看演示:

params[:commit] or params[:otheraction]