0
我試圖用simple_form
創建一個對象及其has_many
協會之一使用Rails 4我應該怎樣使用嵌套的屬性與simple_form,軌道4和的has_many?
這是我到目前爲止有:
class User < ActiveRecord::Base
has_many :applications
accepts_nested_attributes_for :applications
end
class Application < ActiveRecord::Base
belongs_to :user
def self.allowed_params
[:over_18]
end
end
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new user_params
@user.save
# there is more in here, but I don't think it's relevant
end
private
def user_params
params.require(:user).permit(:name, :email, application: Application.allowed_params)
end
end
最後形式本身
<%= simple_form_for @user do |f| %>
<%= f.input :name %>
<%= f.simple_fields_for :application do |a| %>
<%= a.input :over_18, label: 'Are you over 18?', as: :radio_buttons %>
<% end %>
<%= f.button :submit %>
<% end %>
每當我嘗試使用此設置創建新用戶時,出現錯誤:ActiveRecord::UnknownAttributeError: unknown attribute 'application' for User.
問:我應該改變,所以我可以用一個嵌套的應用程序創建新用戶?
我試過將f.simple_fields_for :application
更改爲f.simple_fields_for :applications
,但後來simple_fields沒有渲染表單元素。
你的公會是'has_many'(意爲應用是複數'applications'),因此使用'F。 simple_fields_for:應用程序執行| a | ...' – vee
@vee我已經試過了,但後來simple_fields沒有呈現與應用程序在所有相關的表單元素。如在,我只看到用戶字段(名稱),而不是應用程序字段(over_18)。 –
右所以,在你的'UsersController'的'new'動作不顯示或你沒有它定義。如果您已經定義了它,請確保將用戶的應用程序構建爲「@ user.applications.build」。 – vee