gpt4 book ai didi

ruby-on-rails - User.id 没有保存在表单中

转载 作者:行者123 更新时间:2023-12-03 15:19:16 24 4
gpt4 key购买 nike

我有 2 个模型,promos 和 users。

Promo belongs_to :user
User has_many :promos

在我的路由中,我有嵌套的资源:

  devise_for :users
resources :users do
resources :promos
end

我有一个用于创建新促销的表单,使用 simpleform

<%= simple_form_for [current_user, @promo] do |f| %>
<%= f.input :title, label: "Título de la promoción" %>
<%= f.input :image, label: "Imágen de la promoción", class: "" %>
<%= f.input :description, :as => :text, label: "Descripción de la promoción", :input_html => {class: "materialize-textarea"} %>
<%= f.input :title, label: "Pabrasecreta", class: "validate", input_html: {length: "10"} %>
<%= f.submit "Crear Palabra secreta" , class: "right btn" %>
<% end %>

问题是,user.id 没有被保存在数据库中,所以我在做的时候得到了 nil:

p = Promo.last
=> #<Promo id: 13, created_at: "2015-06-22 21:44:01", updated_at: "2015-06-22 21:44:01", title: "adad", description: "dasfadf", word_id: nil, shop_id: nil, limit: nil, image: "nevera4.jpg", user_id: nil>

Params 正在“正确”传递(为什么 user_id 在提交之后?)

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"4ckcpcgiKlJVFU3GmvzA1i7JrseE7Yq5IW84uqUtDH4=", "promo"=>{"title"=>"adad", "image"=>#<ActionDispatch::Http::UploadedFile:0x007ff4dec8b510 @tempfile=#<Tempfile:/var/folders/n1/hsg_rvx906lgk_81lrm1x5xr0000gn/T/RackMultipart20150622-13699-1rmge4a>, @original_filename="nevera4.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"promo[image]\"; filename=\"nevera4.jpg\"\r\nContent-Type: image/jpeg\r\n">, "description"=>"dasfadf"}, "commit"=>"Crear Palabra secreta", "user_id"=>"1"}

最佳答案

当您使用嵌套路由时,您需要从参数中获取父 ID 并将其与表单参数合并。

当您发布表单时,参数看起来像这样:

{
user_id: 1,
promo: {
title: "¡Ay, caramba!"
}
}

执行 params.require(:promo)... 将 params 哈希切片,以便您只获得 promo 键。

def promo_params
params[:promo].permit(:title,:description,:image)
.merge(user_id: params[:user_id])
end

关于ruby-on-rails - User.id 没有保存在表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30990444/

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