рельсы - путают про маршрутизацию и параметры - PullRequest
0 голосов
/ 17 мая 2011

У меня есть две модели: Группа и Пользователь

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

В моих группах / 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 %>    

Чтобы получить связь между Группой и Пользователем, у меня в контроллере Users есть метод create следующим образом

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 (params [: group_id])

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

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

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

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

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

1 Ответ

1 голос
/ 17 мая 2011

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

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

...