我有一个音乐评论网站,有3位管理员。每当我们去编辑相册时,它会为reviews
提取嵌套表格,如果有的话,它会显示albums#edit
上的所有评论记录,无论给定记录的作者/所有者是谁
如何限制返回的reviews
仅适用于current_user
,并且仍然可以正确构建其嵌套表单字段?
我尝试创建一个范围但是因为我正在调用
@albums.reviews.build
这不起作用。我改为使用快速方法来提取与album
相关联的所有评价,并检查传递给该方法的user
的ID是否与评论的user_id
字段相匹配,但随后Rails抱怨无法调用数组上的构建。
我也尝试过:
@album.reviews.where(user_id: current_user.id).build
但是,即使是我已经评论过的专辑,也没有任何内容出现。
这似乎应该很容易做到,但我不能,因为我的生活,想出来。
答案 0 :(得分:1)
您的字段分配位置错误。尝试这样的事情:
@album.reviews.build(user_id: current_user.id)
当您实际提交表单时,您仍然需要将user_id
放在permit
语句中,但这样可以让您继续。
编辑:
好的,所以我想我知道出了什么问题。您还需要创建一个隐藏字段:
<%= nested_form.hidden_field :user_id, value: current_user.id %>
这样,user_id
将与params
一起传递。您仍然需要在user_id
声明中添加permit
。
答案 1 :(得分:0)
我意识到我正以错误的方式接近这一点。由于我已经使用隐藏字段来设置用户ID,因此我在嵌套表单字段周围添加了一个简单的if语句:
<% if f.object.user_id == current_user.id || f.object.user_id.nil? %>
现在我只在编辑相册时看到我的评论,能够成功创建一个新评论,然后在我再次编辑专辑时看到那个。
感谢您的帮助@ ryan-k!