2010-09-06 85 views
0

我有一个围绕项目列表的表单。我想检查列表上的单选按钮,然后点击“提交”后,进入所选项目的“编辑”页面。Ruby on Rails:表单和单选按钮问题

的问题是,如果我写的东西像

<%= form_tag edit_item_path %> 

但Rails的抱怨,我没有提供一个适当的id,而这又是被我的单选按钮设置为以下几点:

<%= radio_button 'item', 'id', item.id %> 

所以 - 我将如何发送形式有选择的ID给定的动作?

回答

1

做它,你描述是行不通的方式,因为edit_item_path默认REST风格的路径定义是一个GET请求。您正在尝试使其成为POST请求。如果你想坚持RESTful的做事方式,我会建议简单地循环你的项目,并提供编辑链接,因为你打算一次编辑一个。否则,如果您希望在单选按钮的表单中执行操作,则必须定义新的路由。如果你是,比你想补充像这样的东西你的config/routes.rb文件:(假设你使用的轨道2.3.x版本)

 

map.resources :items, :member =>{:edit_radio_form => :post} 
 

比你的形式是这样的: <%= form_tag edit_radio_form_item_path do |form| %> ,它应该工作,但由于多种原因,这不是正确的做事方式,其中最令人讨厌的方式是,您不会在编辑页面上获得完整的URL,因为您通过POST请求获得了完整的URL,所以如果刷新页面,你的物品ID参数将消失,并会产生一个错误。