如何通过关联的 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 限制下拉列表的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置微调器下拉列表的最大长度?

如何使用约束限制外键下拉列表?

fastadmin 一键生成CRUD-特殊字符-关联字段

下拉列表内容怎么设置?

如何在输入元素“上方”显示下拉列表

pb中 如何把两个表中的内容导出到一个电子表格 如何把一个字段作为下拉列表框的item