在创建和编辑中使用相同的表单partial,在我的例子中是新建和预览。partial看起来有点像这样(我使用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-output中是
...
<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"/>
...为什么button_to不生成button-to表单?
一种解决方案是将按钮放在部分之外,每个窗体只有1个按钮,但如何在同一窗体中有2个按钮呢?
编辑:另一种解决方法是隐藏复选框,如果按下button_to并提交表单,javascript会设置该复选框,从而在控制器中将它们分开
发布于 2009-09-19 18:14:39
HTML实际上不允许表单嵌套。有些浏览器是这样做的,但您会在其他浏览器中看到一些疯狂的行为。您显示的HTML是原始输出还是来自firebug的计算DOM?
处理这种情况的首选方法是将button_to移出另一个表单。如果您对仅支持JS的选项不感兴趣,您可以使用link_to :method => :post并将链接样式化为一个按钮。
发布于 2009-09-22 09:10:10
最后使用了
:name => 'otheraction'然后在控制器中检查
params[:commit] or params[:otheraction]在params散列中
发布于 2013-10-17 23:02:15
我构建了一个名为button_link_to的gem。
使用button_link_to方法将生成按钮标记,但不嵌套by form标记。
就像link_to一样使用它。
你可以从这里获得更多信息:https://github.com/tonilin/button_link_to
如果你想看演示:http://button-link-to.herokuapp.com/
https://stackoverflow.com/questions/1448688
复制相似问题