rails wicked gem has_one 关联和嵌套形式
Posted
技术标签:
【中文标题】rails wicked gem has_one 关联和嵌套形式【英文标题】:rails wicked gem has_one association and nested form 【发布时间】:2021-04-06 01:53:26 【问题描述】:在我的 has_one 关联表单上,字段不会出现在单数表单中。
<%= f.fields_for :pack_social_media_sur_mesure, @commande.pack_social_media_sur_mesure do |ff| %>
仍然是空的
我想我错过了什么......
我的模特:
指挥模型:
class Commande < ApplicationRecord
belongs_to :user
validates_presence_of :user
has_one :pack_social_media_sur_mesure, dependent: :destroy
accepts_nested_attributes_for :pack_social_media_sur_mesure, allow_destroy: true
end
PackSocialMediaSurMesure 模型:
class PackSocialMediaSurMesure < ApplicationRecord
belongs_to :commande
...
end
我的控制器:
class CommandeStepsController < ApplicationController
...
def update
@user_id = current_user.id
@user = current_user
@commande = @user.commande
@commande.update(commande_params)
end
...
def commande_params
params.require(:commande).permit(:id,..., pack_social_media_sur_mesure_attributes: [:id, ...])
end
end
我的表格:
<%= form_for @commande, url: wizard_path, html: class: "pack-slide" , method: :put do |f| %>
<%= f.fields_for :pack_social_media_sur_mesure, @commande.pack_social_media_sur_mesure do |ff| %>
<%= ff.select :question1 %>
...
<% end %>
<%= f.submit %>
<% end %>
PS : 我在这个表单中使用了 wicked gem,这就是为什么wizard_path
。
谢谢, 泰奥
【问题讨论】:
【参考方案1】:好的,我找到了。
这些字段没有出现的原因是我已经创建了一个“commande”而不是一个“pack_social_media_sur_mesure”。或者“邪恶的宝石”将我们带到编辑路径,但如果它不存在,我们就无法编辑它。
解决方案是在创建“订单”时创建 pack_social_media_sur_mesure,如下所示:
class CommandesController < ApplicationController
before_action :set_commande, only: [:show, :edit, :update, :destroy]
...
def create
@commande = current_user.create_commande(commande_params)
if @commande.save
if @commande.pack_social_media_sur_mesure == nil
@commande.create_pack_social_media_sur_mesure(...)
end
redirect_to ...
else
render :new
end
end
...
def set_commande
@commande = current_user.commande
end
【讨论】:
以上是关于rails wicked gem has_one 关联和嵌套形式的主要内容,如果未能解决你的问题,请参考以下文章
Rails:在 rails 中使用带有 has_one 关联的 build
has_one 与用户和客户的关联以及 Rails 视图表单
Rails:在父模型的视图中创建一个 has_one 模型?