Forms RubyonRails关系下拉列表第二个依赖于第一个

Forms RubyonRails关系下拉列表第二个依赖于第一个,forms,dependencies,ruby-on-rails-3.1,selection,formtastic,Forms,Dependencies,Ruby On Rails 3.1,Selection,Formtastic,我有三个不同的模型将涉及到这一点。我正在尝试创建一个属于所有者的用户。所有者有许多合作伙伴,合作伙伴有许多客户。这个问题以及它与这里提出的其他问题的不同之处在于,我不希望有人查看页面的源代码并查看整个客户端列表。这目前正处于开发/测试阶段。我最终会将所有者id硬编码为@current\u user的所有者id。此所有者用户只能看到自己的合作伙伴和这些合作伙伴的客户端。我不想让他们看到另一个所有者的合伙人 <%= f.input :owner_id, :as => :select, :

我有三个不同的模型将涉及到这一点。我正在尝试创建一个属于所有者的用户。所有者有许多合作伙伴,合作伙伴有许多客户。这个问题以及它与这里提出的其他问题的不同之处在于,我不希望有人查看页面的源代码并查看整个客户端列表。这目前正处于开发/测试阶段。我最终会将所有者id硬编码为@current\u user的所有者id。此所有者用户只能看到自己的合作伙伴和这些合作伙伴的客户端。我不想让他们看到另一个所有者的合伙人

<%= f.input :owner_id, :as => :select, :collection => Owner.find(:all) %>
<%= f.input :partner_id, :as => :select, :collection => Partner.find(params[:owner_id]) %>
<%= f.input :client_id, :as => :select, :collection => Client.find(params[:partner_id]) %>
:选择,:集合=>所有者。查找(:全部)%>
:select,:collection=>Partner.find(参数[:owner\u id])%>
:select,:collection=>Client.find(参数[:partner_id])%>
我上面提到的问题是find参数正在生成一个错误,因为:owner_id没有值,并且不会找到任何合作伙伴。那么,当选择合作伙伴时,如何让客户选择填充客户列表呢。同样,如何确定在选择所有者后如何填充合作伙伴。请记住,一旦我弄明白了这一点,所有者行将发生变化。在解决这个问题之前,没有必要继续前进


如果这是一个基于所选州的城市,我已经找到了几个选项,但还没有找到合适的选项。谢谢大家

我认为您没有理解(或利用)模型关联。由于我不完全了解您的模型或业务领域,我在这里做了很多挥手致意。。。听起来您想将“选择”框中的选项数量限制为当前用户应该能够看到的选项

假设你有一个Tumblr风格的应用程序。你有很多用户,还有很多博客。当前登录的用户可以将新项目发布到他们有权访问的任何一个博客。当创建一篇新文章并选择发布它的博客时,让我发布到你的博客,甚至不知道它存在是不合适的。我们将使用
@current\u user.blogs
,而不是
Blog.all

<%= semantic_form_for @post do |f| %>
  <%= f.input :blog, :label => "Which blog?", :as => :select, :collection => @current_user.blogs %>
  ...
<% end %>

“哪个博客?”,:as=>:select,:collection=>@current_user.blogs%>
...
我会看到我的博客列表,你会看到你的。我想这部分回答了你的问题

问题的另一部分似乎是基于表单中其他选择框中的选择动态更改选择框的内容。这是需要用Javascript/AJAX处理的事情,有点超出了Formtastic的范围,这是一个关于堆栈溢出的简单答案:)

我建议在第一个版本中尽量简单