Rails 3 - 使用集合选择中的选定值创建“link_to”

时间:2011-10-19 19:41:13

标签: ruby-on-rails-3 form-helpers


大家好。

我在我的rails 3应用程序中有一个表单,其中一个字段是这样的“集合选择”

<div class="field">
<%= f.label :provider_id, "Provider" %>
<%= collection_select( :purchase_document, :provider_id, Provider.all, :id, :name) %>
</div>

这个想法是能够使用“集合选择”中的选定值添加“link_to”,即:

<div class="field">
    <%= f.label :provider_id, "Provider" %>
    <%= collection_select( :purchase_document, :provider_id, Provider.all, :id, :name) %> <%= link_to "Show", provider_path(***selected option from collection select***)%>

但是,我不知道如何获得所选值。 有没有铁路方式来做到这一点?

希望你能帮助我,谢谢     

2 个答案:

答案 0 :(得分:3)

不知道这是否是您想要做的,但如果您想在用户从下拉菜单中选择不同的项目时动态更改链接,则需要使用客户端脚本实现此功能,例如Javascript (或Cof​​feescript)。 Ruby on Rails只能执行服务器端脚本,任何与浏览器相关的动态行为都必须通过客户端脚本来完成。

答案 1 :(得分:0)

完全可以在没有javascript的rails中进行。我们将所有参数保存在params(即url中),然后我们提交一个方法为“get”的表单(不像往常那样发布),所以我们可以在url中包含所有这些参数。

以下示例应该可以在文本字段中写一个名称,并获取一个页面,其中名称作为参数传递给url。 (例如http://myapp.com:3000?user_name=andres&phone_number=123456

查看文件:

= form_tag(reloadindex_aplication_path, method: :get) do
  Name:
  = text_field_tag 'user_name', params[:user_name]
  Phone:
  = text_field_tag 'phone_number', params[:phone_number]
  = submit_tag "Search..."

控制器文件:

def reloadindex
  redirect_to aplication_path({:user_name => params[:user_name], :phone_number =>  params[:phone_number]})
end