私は何時間もこれを理解しようとしていましたが、私は同様の質問をすべてレビューしましたが、Rails 3ネストされたフォームで、デバイスフィールドがレンダリングされていない
私はビューが隠しフォームをレンダリングしませんので、
class Users::RegistrationsController < Devise::RegistrationsController
prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
layout "public"
def new
@user = User.new
@user.user_roles.build()
@role = Role.find_by_name("organiser")
super
end
などの登録コントローラをオーバーライドしている次の形式
登録/ new.html.erb
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<%= f.fields_for :user_roles do |builder| %>
<%= builder.hidden_field :role_id, :value => @role.id %>
<% end %>
を持っています私がf変数を削除すると、user_rolesのフィールドがレンダリングされます。
私は新しいアクションでuser_rolesのプレースホルダインスタンスを構築していますが、これは何の違いもありません。私はaccepts_nested_attributes_for :user_roles
を設定しました。
これはとにかく私の注意をそらすものです。どんな助けでも大歓迎です。