私は自分のサイトに簡単なロールモデルを設定しようとしています。ユーザーは任意の数の役割を持つことができます。今私はそれをサインアップフォームの隠れたフィールドに設定しています。私が実行している問題は、入れ子になったフォームでロールタイプが保存されていないことです。ロールテーブルにはuidのエントリが作成されていますが、それはそれです。関連するコードは以下の通りです。どんな助けもありがとう。入れ子フォームからの情報をレールコントローラに保存
== Schema Information
Table name: roles
id :integer not null, primary key
user_id :integer
role :string(255)
created_at :datetime not null
updated_at :datetime not null
相続人
def create
@user = User.new(params[:user])
if @user.save
@role = @user.roles.new(user_id:@user.id, role:params[:role])
flash[:success] = "Thanks for singing up for the Auditions App, any audition invitations will be visible on this page"
#need to add the role guest to user roles
redirect_to @user
else
render 'new'
end
エンド
相続フォーム....
<div class="span10 offset1 ajax-form">
<%= form_for(@user, :html => {:class => 'well'}) do |f| %>
<h3>Guest Account Signup</h3>
<%= render 'shared/error_messages' %>
<div class="pull-left form-field"><%= f.label :first_name %>
<%= f.text_field :first_name, :class => 'span4' %></div>
<div class="pull-left form-field"><%= f.label :last_name %>
<%= f.text_field :last_name, :class => 'span4' %></div>
<div class="pull-left form-field"><%= f.label :email %>
<%= f.text_field :email, :class => 'span4' %></div>
<div class="pull-left form-field span4"></div>
<div class='clear'></div><!--close .clear-->
<div class="pull-left form-field"><%= f.label :password %>
<%= f.password_field :password, :class => 'span4' %></div>
<div class="pull-left form-field"><%= f.label :password_confirmation, "Confirm Password" %>
<%= f.password_field :password_confirmation, :class => 'span4' %></div>
<div class="form_row pull-left form-field">
</div>
<%= f.hidden_field :role, :value => 'guest' %>
<%= f.submit "Create my account", :class => "btn btn-large btn-primary pull-left form-field" %>
<div class='clear'></div><!--close .clear-->
<% end %>
あなたはどのように言ってくださいすることができ:それとも、このような一度にそれらをつかむことができますサインアップフォームの場合はcurrent_user.idを取得していますか?コード: '<%= role_form.hidden_field:user_id、:value => current_user.id%>' –
良い点は、@ user.saveの後にフォームとコントローラーの外に移動しました。私の唯一の問題は、フォームに余分なパラメータを渡してコントローラで呼び出す方法です。 –