我正在建立一个音乐专辑评论网站。我有以下模型(与这篇文章相关):
用户
艺术家有很多专辑
我的表单都设置正确,并将评论字段拉入专辑表格。一切都正确写入数据库,但我有一个问题:如果是一个新的评论,我如何动态地将user_id字段设置为current_user.id(只有用户可以创建评论,用户只会是管理员,所以会有我们2-3人),但如果这是一个现有的评论,在进入专辑#dit编辑时会留下该字段吗?
现在我有:
<div class="field">
<%= f.number_field :user_id, value: current_user.id %>
</div>
<div class="field">
<%= f.label :content %><br />
<%= f.text_area :content %>
</div>
与其他字段一起,这适用于新的审核,因为user_id字段使用current_user.id值填充。但是,当我去编辑相册时,如果我手动将user_id值更改为其他内容,保存,返回并再次编辑,则会重置为我的user.id值(在本例中为1)。
现在,在Album表单上,我只使用
if @album.new_record? ... end
语句要么使用current_user.id预先填充隐藏字段,要么对现有记录不执行任何操作,因为我不希望这样做。
但是我无法弄清楚如何对嵌套字段做同样的事情并且无法通过Google搜索找到任何东西。我尝试过使用f,builder,review,@ look,self aand都导致了nil:nilClass错误。那么我怎样才能为嵌套的评论字段完成同样的事情呢?
if nested_review.new_record?
user_id = current_user.id
else
user_id
end
我真的希望在我只是忽略的视图中这是一件简单的事情。看起来应该是这样。
答案 0 :(得分:1)
您可以访问现有的user_id
到f.object
。
以下内容可以帮助您实现目标:
<%= f.number_field :user_id, value: (f.object.user_id || current_user.id) %>
不知道为什么你把它变成了一个可编辑的字段。当然,它应该是一个隐藏的。