2015-02-03 3 views
0

У меня есть группа пользователей и пользователей, к которым присоединилось членство.Добавление пользователей в группу в Rails

Когда я вызова кода

группы/show.html.erb

<%= link_to "Add to group", group_path(:group_id => @group.id, :user_id => user.id), :method => :put %>

Он вызывает метод обновления в groups_controller.rb

def update 
    @group = Group.find(params[:id]) 
    @user = User.find(params[:user_id]) 
    if [email protected](@user) 
     @group.users << @user 
    end 
    end 

Но выдает ошибку :

ActiveRecord :: RecordNo tFound в GroupsController # обновление

Не удалось найти пользователя с идентификатором «» = 1 [WHERE «членство». «group_id» =?]

Я строю свой первый рельсы приложение и не знаю, почему это происходит. Благодаря!

ответ

0

У вас есть две ошибки:

  1. Вам нужно найти @group по params[:group_id], потому что это то, что вы посылаете.
  2. @group.users.find(@user) высказал ошибку, если @user еще не ассоциирован с кодом @group, что не является тем, что вы хотите. Вы хотите запустить @group.users << @user unless @group.users.include? @user, чтобы добавить пользователя, если она еще не в группе.
+0

Спасибо! Снятие инструкции if Это устранило проблему ... но она добавляет пользователя несколько раз. Могла ли я проблема в другом месте? – daibhin

+0

Отлично! Меня беспокоят весь день. Отличный первый опыт StackOverflow – daibhin

0

Ваш групповой путь использует :group_id, но контроллер ищет :id. Вероятно, они должны совпадать.

+0

Я попытался изменить его, но без радости. В любом случае это все равно показывает ту же ошибку. С членами [WHERE] ". Group_id" =?] Одинаково в обоих случаях. Что означает эта линия? Я также нашел эти параметры отладки: Параметры: {"_method" => "put", "authenticity_token" => "vVq5lDZK5pQori9WGc0yFKsCtIESApAW4Ep3pxDInqyTLUP7TPi0vjB6k ltgJgHujWFEN2wExhU4hTOdxz/jfg ==", "group_id" => "3", "user_id" => "1 "," id "=>" 3 "} – daibhin

Смежные вопросы