gpt4 book ai didi

ruby-on-rails - accepts_nested_attributes_for 的构建参数问题

转载 作者:行者123 更新时间:2023-12-04 06:19:08 25 4
gpt4 key购买 nike

我正在尝试将 user_id 添加到由父 Controller 构建的嵌套属性,但它似乎没有达到预期的效果?

即。我有一个名为 Place.rb 的模型,它 accepts_nested_attributes_for :reviewshas_many :reviews, :as => :reviewable, :dependent => :destroy

嵌套属性工作正常,我在 Places Controller 中构建它,就像这样......

新 Action

@review = @place.reviews.build(:user_id => current_user.id)

创建 Action

params[:place].merge(:user_id => current_user.id)
params[:place][:reviews_attributes].merge!(:user_id => current_user.id)* bad
@place = Place.new(params[:place])

这是原始的,为了让 place 模型获得 user_id,现在我还需要用于嵌套评论模型的 user_id。地方和评论都有 user_id,这似乎很奇怪,但人们可以为同一个地方添加新评论...

可能像这样但不起作用:

@place = Place.new(params[:place].merge(:user_id => current_user.id, :reviews_attributes => { :user_id => current_user.id } ))

得到错误:undefined method with_indifferent_access' for 3:Fixnum`

@place = Place.new(params[:place].merge(:user_id => current_user.id, :reviews_attributes => { "0" =>  { :user_id => current_user.id }}))

它添加了正确的 user_id 但将评论内容替换为 NULL ;-(

我之前是通过表单添加用户的,但我想通过 Controller 来添加,这样它只会在创建时添加 user_id,因为特定的评论可能会被其他人更新,而我不想更新更改原始作者的 user_id...

旧方法:

<%= e.label :content, "Review" %><br />
<%= e.text_area :content, :rows => 20, :class => 'jquery_ckeditor' %><br />
<%= e.hidden_field :user_id, :value => current_user.id %> #want to remove this line

但是通过 Controller ,带选项的构建方法没有效果?有任何想法吗?我不能通过构建来执行此操作吗?

日志中的输出:

    Parameters: {"commit"=>"Submit", "action"=>"create", "city_id"=>"prague",
"controller"=>"places", "place"=>{"address"=>"fsdfsdf", "name"=>"sdfsdfsd",
"reviews_attributes"=>{"0"=>{"content"=>"<p>\r\n\tsdfsdfsdfsdfsdfsdfsdf sdfsdfsdf</p>\r
\n"}}, "website"=>"", "city_id"=>"1036", "place_type"=>"1"}}

最佳答案

试试这个:

params[:place][:user_id] = current_user.id
params[:place][:reviews_attributes].each do |key, review|
review[:user_id] = current_user.id
end if params[:place][:reviews_attributes]

关于ruby-on-rails - accepts_nested_attributes_for 的构建参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com