Как передать идентификатор из действия создания в другое действие? - PullRequest
0 голосов
/ 14 мая 2018

Хорошо, у меня есть два метода

def join_group
  @user = User.find(current_user[:id])
  @group = Group.find(params[:id])

  respond_to do |format|
    if @user.groups << @group
      format.html {redirect_to @group}
      format.js
    else
      format.html { render :index}
    end
  end
end

def create
  @group = Group.new(group_params)
  @group.created_by = current_user.id
  respond_to do |format|
    if @group.save
      format.html { redirect_to @group }
      format.js
      format.json { render :show, status: :created, location: @group }
    else
      format.html { render :new }
      format.json { render json: @group.errors, status: :unprocessable_entity }
    end
  end
end

И я хочу сделать это после того, как create action join_group вызвано.Я пытался after_action :join_group, only: [:create], но я не знаю, как передать id в join_group, и я закончил с ActiveRecord::RecordNotFound (Couldn't find Group with 'id'=):

1 Ответ

0 голосов
/ 14 мая 2018

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

def create
  #adds user to the group and builds it like you have it.
  @group = current_user.groups.build(group_params.merge(created_by: current_user.id)
  respond_to do |format|
    if @group.save
      format.html { redirect_to @group }
      format.js
      format.json { render :show, status: :created, location: @group }
    else
      format.html { render :new }
      format.json { render json: @group.errors, status: :unprocessable_entity }
    end
  end
end

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...