如何通过关联的 user_id 限制下拉列表的内容?
Posted
技术标签:
【中文标题】如何通过关联的 user_id 限制下拉列表的内容?【英文标题】:how do I limit the contents of my dropdown by the associated user_id? 【发布时间】:2013-10-21 18:47:09 【问题描述】:在我的 Rails 视图中,我有一个带有下拉列表的表单,如下所示:
<%= simple_form_for(@appointment) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.association :client, label_method: lambda |c| "#c.first_name #c.last_name" %>
<%= f.input :occured_on %>
<%= f.input :start %>
<%= f.input :end %>
<%= f.input :copay_received %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
我想将下拉列表的内容限制为仅与 current_user.id 关联的客户端。
我该如何做到这一点?
如果您需要查看我的控制器或其他东西,请告诉我,但它并没有什么特别之处。我打赌你可以猜到它的内容。
【问题讨论】:
你可以通过collection来限制 【参考方案1】:只需添加集合参数:
<%= f.association :client, label_method: lambda |c| "#c.first_name #c.last_name" , collection: Client.where(user_id: current_user.id) %>
替代方案:
# this implies you have declared: user has_many :clients
<%= f.association :client, collection: current_user.clients, label_method: lambda|c| "..." %>
【讨论】:
甜蜜! +1 用于不那么冗长的替代方案 :-)以上是关于如何通过关联的 user_id 限制下拉列表的内容?的主要内容,如果未能解决你的问题,请参考以下文章