如何将id从create action传递给另一个动作?

时间:2018-05-14 14:28:08

标签: ruby-on-rails

好的我有两种方法

msg()

我希望在调用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后进行此操作。我正在尝试join_group,但我不知道如何将after_action :join_group, only: [:create]传递到id,我最终得到join_group

1 个答案:

答案 0 :(得分:0)

您可以在创建方法中设置用户,而不是在创建用户后添加完全独立的操作。

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传递给它。