【问题标题】:Filter by user.id using collection_select for drop down in form使用 collection_select 按 user.id 过滤表单下拉菜单
【发布时间】:2018-01-21 13:48:51
【问题描述】:

我的第一个 SO 帖子。终于找到了让我难过的东西,经过 6 个多小时后,我决定在我失去理智之前需要一些帮助。

我正在尝试将 collection_select 用于字段中的下拉列表,以在第二个模型中创建新记录。我的目标是填充由个人用户从 Accounts 模型(一个共享数据库)创建的记录列表,以在名为 Assets 的新模型中创建记录。

我已将 Accounts 表单设置为为创建条目的用户存储自动生成的记录 ID,因此我应该能够以某种方式引用它。

此时数据填充在下拉列表中并保存,但是它显示了所有用户创建的所有条目,而不仅仅是创建新条目的用户创建的条目。

我确定有一些方法可以按 current_user.id 进行过滤。我尝试了 100 件我在网上找到的东西,当它返回一个代表我想要的用户 ID 的整数时,我能得到的最接近的是一个无效的参数错误。

表单标签:

<%= form.label :asset_location, id: :asset_asset_location %>
<%= collection_select(:asset, :asset_location_id, Account.all, :id, :account_name, {}, {:multiple => false}) %>

控制器标签:

  respond_to do |format|
  @asset.user_id = current_user.id if current_user
  if @asset.save
    format.html { redirect_to asset_path}
    format.json { render :show, status: :created, location: @asset }
  else
    format.html { render :new }
    format.json { render json: @asset.errors, status: :unprocessable_entity }
  end
end

我对 Ruby/Rails 很陌生,并试图找出是否有更好的方法来过滤由 current_user.id 填充的下拉列表中的结果

我整晚都在做这件事,不打算睡觉,直到它是正确的,所以任何帮助将不胜感激。哈哈哈

【问题讨论】:

    标签: mysql ruby-on-rails ruby ruby-on-rails-4 collection-select


    【解决方案1】:

    您应该可以使用current_user.accounts 引用用户创建的accounts,因此只需将Account.all 替换为current_user.accounts

    <%= form.label :asset_location, id: :asset_asset_location %>
    <%= collection_select(:asset, :asset_location_id, current_user.accounts, :id, :account_name, {}, {:multiple => false}) %>
    

    【讨论】:

      猜你喜欢
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2018-09-06
      • 2015-04-02
      • 2020-10-01
      • 2023-03-11
      相关资源
      最近更新 更多