首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果已处于其他表单中,则=button_to不会生成表单

如果已处于其他表单中,则=button_to不会生成表单
EN

Stack Overflow用户
提问于 2009-09-19 14:46:31
回答 3查看 4.2K关注 0票数 6

在创建和编辑中使用相同的表单partial,在我的例子中是新建和预览。partial看起来有点像这样(我使用HAML)

代码语言:javascript
复制
=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中是

代码语言:javascript
复制
...
<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会设置该复选框,从而在控制器中将它们分开

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-19 18:14:39

HTML实际上不允许表单嵌套。有些浏览器是这样做的,但您会在其他浏览器中看到一些疯狂的行为。您显示的HTML是原始输出还是来自firebug的计算DOM?

处理这种情况的首选方法是将button_to移出另一个表单。如果您对仅支持JS的选项不感兴趣,您可以使用link_to :method => :post并将链接样式化为一个按钮。

票数 14
EN

Stack Overflow用户

发布于 2009-09-22 09:10:10

最后使用了

代码语言:javascript
复制
:name => 'otheraction'

然后在控制器中检查

代码语言:javascript
复制
params[:commit] or params[:otheraction]

在params散列中

票数 1
EN

Stack Overflow用户

发布于 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/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1448688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档