链接到Rails下拉列表中的编辑操作

时间:2014-05-27 14:23:17

标签: ruby-on-rails drop-down-menu edit form-for

我有一个下拉列表,显示我的应用程序中的所有不同行业对象,我希望用户从下拉列表中选择行业,然后链接到编辑页面。目前,提交按钮直接链接到更新操作。

<%= form_for [@industry] do |f| %>
  <%= f.select( :id, options_for_select(Industry.get_names), :method => "Edit") %>
  <%= f.submit "Edit Industry", class: "btn" %>
<% end %>

1 个答案:

答案 0 :(得分:1)

你有一个表单:一个直接的html表单将提交一个请求(默认情况下为POST)到一个固定的URL,并可选择添加一些参数。

要使表单发送到显示用户在下拉菜单中选择的对象的信息的页面,您需要确保在路径和操作中显示只是参数,而不是网址本身,以决定做什么。

在标准导轨设置中,params[:id]会自动加入网址,例如/industries/123/edit。您的表单将包含一个url,其中包含您之前定义的@industry对象的ID,这不是您想要的。你需要确保你有一个只在params中查看的动作来决定实际加载哪个Industry对象。

例如,您可以设置如此路线:

get '/industry/edit', to: 'industry#edit'

现在,您可以使用传统的params[:id] OR 传递行业对象的编辑操作,传递/industry/123/edit(操作中的代码)我们的新路线/industry/edit?id=123

我们现在可以使用以下形式的第二条路线:

<%= form_tag "/industry/edit", :method => :get do %>
  <%= select_tag( :id, options_for_select(Industry.get_names)) %>
  <%= submit_tag "Edit Industry", class: "btn" %>
<% end %>

编辑:我将其从form_for(围绕编辑AR对象)更改为form_tag,这意味着将f.select和f.submit更改为select_tag和submit_tag。