我正面臨這個問題,經過挖掘,我似乎無法找到解決方案。
我正在嘗試在嵌套表單上創建用戶和他的 meet_infos,但在引數中,我總是以“meet_infos”而不是“meet_infos_attributes”結束:
Unpermitted parameters: :page_id, :meets_infos. Context: { controller: Users::MeetInfosController, action: create, request: #<ActionDispatch::Request:0x00007f224cc73128>, params: {"authenticity_token"=>"[FILTERED]", "user"=>{"page_id"=>"1", "last_name"=>"nxgfbngh", "first_name"=>"n hgn cgn", "phone"=>"nfcntrsbgxd", "email"=>"hbfdhnbytdgbn", "meets_infos"=>{"page_id"=>"1", "reason"=>"dfgnhgdn", "datetime(1i)"=>"2022", "datetime(2i)"=>"4", "datetime(3i)"=>"26", "datetime(4i)"=>"11", "datetime(5i)"=>"17"}}, "commit"=>"Save User", "controller"=>"users/meet_infos", "action"=>"create", "page_id"=>"1"} }
我的表格:
<%= simple_form_for :user do |f| %>
<%= f.error_notification %>
<%= f.input :page_id, as: :hidden, input_html: { value: @page.id } %>
<%= f.input :last_name %>
<%= f.input :first_name %>
<%= f.input :phone, :as => :tel %>
<%= f.input :email, :as => :email %>
<%= f.simple_fields_for :meet_infos do |mf| %>
<%= mf.input :page_id, as: :hidden, input_html: { value: @page.id } %>
<%= mf.input :reason, :as => :text %>
<%= mf.input :datetime, :as => :datetime %>
<% end %>
<%= f.submit %>
<% end %>
我的控制器:
class Users::MeetInfosController < ApplicationController
skip_before_action :authenticate_admin!
before_action :set_page, only: %i[index create destroy]
def index; end
def create
@user = User.new(user_params)
if @user.save
redirect_to page_users_meet_infos_path
flash[:success] = 'Rdv pris'
else
render :index
end
end
private
def user_params
params.require(:user).permit(:id, :last_name, :first_name, :phone, :email, { meet_infos_attributes: [:id, :reason, :datetime, :_destroy] }).merge(page_id: @page.id)
end
def set_page
@page = Page.find(params[:page_id])
end
end
用戶型號:
class User < ApplicationRecord
belongs_to :page
has_many :meet_infos, dependent: :destroy
accepts_nested_attributes_for :meet_infos
validates_presence_of :page_id
validates :last_name, presence: true
validates :first_name, presence: true
validates :email, presence: true, uniqueness: true
validates :phone, presence: true, uniqueness: true
end
MeetInfo 型號:
class MeetInfo < ApplicationRecord
belongs_to :page
belongs_to :user
validates_presence_of :user
validates_presence_of :page_id
validates :reason, presence: true, uniqueness: true
validates :datetime, presence: true, uniqueness: true
end
uj5u.com熱心網友回復:
你有一個鬼鬼祟祟的 nil 錯誤。采用:
<%= simple_form_for @user do |f| %>
用符號呼叫form_forandsimple_form_for并讓它決議一個實體變數是一個愚蠢的遺留功能,它已經被貶低了很長時間,我想是時候砍掉它了。
舉個簡單的例子:
<%= simple_form_for(@country) do |form| %>
<% debugger form.object %>
<%= form.input :name %>
<fieldset>
<legend>Cities</legend>
<%= form.simple_fields_for :cities do |cities| %>
<%= cities.input :name %>
<% end %>
</fieldset>
<% end %>
這將產生您已傳遞給simple_form_for除錯器的模型。如果將其更改為符號simple_form_for(:country),您將得到 nil ,并且該符號似乎只是用作form_with- 的范圍引數,并且由于沒有模型fields_for只是使用該符號:meet_infos而不是呼叫物件上的方法。
可以爭辯說,simple_form_for應該提出錯誤并警告該行為已被貶低。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/465708.html
標籤:轨道上的红宝石 嵌套形式 嵌套属性 ruby-on-rails-7
上一篇:不合理的未定義方法“電子郵件”
