【发布时间】:2014-12-27 22:48:02
【问题描述】:
我正在建立一个音乐专辑评论网站。我有以下模型(与这篇文章相关):
- 专辑
- 艺术家
- 审核
用户
艺人有很多专辑
- 相册有很多评论
- 用户有很多评论
我的表单设置正确,并且评论字段被拉入专辑表单。一切都正确写入数据库,但我有一个问题:如果是新评论,如何将 user_id 字段动态设置为 current_user.id (只有用户可以创建评论,用户只能是管理员,所以会有2-3 人),但如果它是在前往专辑#edit 时填充的现有评论,请保留该字段?
现在我有:
<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)。
现在,在相册表单本身上,我只需使用
if @album.new_record? ... end
声明要么使用 current_user.id 预填充隐藏字段,要么对现有记录不做任何事情,因为我不希望它改变。
但我不知道如何为嵌套字段做同样的事情,并且无法通过谷歌搜索找到任何内容。我试过使用 f、builder、review、@review、self a 并且都导致 nil:nilClass 错误。那么我怎样才能为嵌套的评论字段完成同样的事情呢?
if nested_review.new_record?
user_id = current_user.id
else
user_id
end
我真的希望这是一件简单的事情,因为我只是在俯瞰。应该是这样的。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 nested-forms