rails - запутался в маршрутизации и параметрах

У меня есть две модели, группа и пользователь

Пользователь принадлежит_группе и группа имеет_много пользователей

В моих группах/show.html.erb у меня есть форма регистрации пользователя

<h1>Create user</h1>

<%= form_for @user do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, "Confirmation" %><br />
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>    

Чтобы установить связь между группой и пользователем, у меня есть метод создания в моем контроллере пользователей следующим образом.

def create
    @group = Group.find(params[:group][:id])    
    @user = @group.users.build(params[:user])
    if @user.save
      flash[:success] = "You have created a new user"
      redirect_to group_path
    else
      @title = "Create user"
      render 'new'
    end
end

Я также пробовал: @group = Group.find(params[:id])

и

@group = Group.find(параметры[:group_id])

Но я все еще получаю сообщение об ошибке

По сути, я хочу создать новых пользователей в группе/show.html.erb и связать этого пользователя с группой, в которой он был создан. Например, если пользователь создан в группах/3, как мне установить мой метод создания в контроллере Пользователи, чтобы убедиться, что это отношение сохраняется?

В общем, я следил за учебным пособием Hartl Rails по адресу http://ruby.railstutorial.org/chapters/user-microposts#sec:creating_microposts и следуя подходу к формам и методам создания. Однако я не уверен, как получить параметры для групп/3 в методе поиска, например @group = Group.find(?????)

Может кто-нибудь просветить меня, эта проблема беспокоит меня уже несколько дней.

заранее спасибо


person Zakoff    schedule 16.05.2011    source источник
comment
У меня есть ощущение, что мне может понадобиться пользователь hidden_field_tag ​​в форме, чтобы передать group.id, но не знаю, как это сделать   -  person Zakoff    schedule 17.05.2011


Ответы (1)


После отправки формы вы попадете на страницу users#create. Этот маршрут не имеет сегмента group_id.

Чтобы передать туда group_id, вам нужно сохранить его в скрытом поле в вашей форме.

person bassneck    schedule 16.05.2011
comment
Могу ли я сделать это: ‹%= hidden_field_tag ​​:group_id, :value =› @group.id %›, затем в моих пользователях#create сделать это @group = Group.find(params[:group_id])? - person Zakoff; 17.05.2011
comment
Теперь это решено, я сделал ‹%= hidden_field_tag ​​:group_id, @group.id %›, спасибо - person Zakoff; 17.05.2011