Ich versuche ein einfaches Rollenmodell für meine Website einzurichten. Benutzer können beliebig viele Rollen haben. Im Moment stelle ich es als verstecktes Feld auf dem Anmeldeformular ein. Das Problem, auf das ich stoße, ist, dass in meiner verschachtelten Form der Rollentyp nicht gespeichert wird. Ein Eintrag mit der UID wird in der Rollentabelle erstellt, aber das ist es auch schon. Der entsprechende Code ist unten. Jede Hilfe wäre willkommen.Speichern von Informationen aus verschachtelten Formularen in Schienen-Controllern
== 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
Heres die create-Methode von meinem Benutzer-Controller ...
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
Ende
Heres die Form ....
<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 %>
Können Sie mir bitte sagen, wie erhalten Sie current_user.id, wenn es sich um ein Anmeldeformular handelt? Code: '<% = role_form.hidden_field: user_id,: wert => current_user.id%>' –
Guter Punkt, ich habe es aus dem Formular entfernt und in der Steuerung nach @ user.save behandle ich das Rollenobjekt. Ich denke, mein einziges Problem ist jetzt, wie man einen zusätzlichen Parameter in einem Formular übergibt und es im Controller aufruft. –