我的第一篇SO帖子。终于找到了让我难过的东西,经过6个多小时后,我决定在失去理智之前需要一些帮助。
我正在尝试将collection_select用于字段中的下拉列表,以在第二个模型中创建新记录。我的目标是从表单模型(共享数据库)中填写单个用户创建的记录列表,以便在名为Assets的新模型中创建记录。
我已将Accounts表单设置为存储创建条目的用户的自动生成记录ID,因此我应该能够以某种方式引用它。
此时数据会在下拉列表中填充并保存cab,但它会显示所有用户所做的所有条目,而不是仅显示创建新条目的用户所做的条目。
我确信有一些方法可以通过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下拉列表中填充的结果
我确实整晚都在这,并且不计划睡觉,直到它是正确的,所以任何帮助都将非常感激。哈哈哈
答案 0 :(得分:1)
您应该能够使用accounts
引用用户创建的current_user.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}) %>