0

新しいオブジェクトを作成するリンクを生成しようとしています。オブジェクトを作成しますが、user_idまたはsubreddit_idを設定しません。

<%= link_to ' (add to my subreddits)', 
            { 
              controller: 'subscriptions',
              action: 'create',
              user_id: current_user.id,
              subreddit_id: subreddit.id
            },
              method: :post %>

関連するコントローラーは次のとおりです。

def new
@subscription = Subscription.new

unless current_user.admin?
  @subscription.user_id = current_user.id
end

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @subscription }
end
end

def create
@subscription = Subscription.new(params[:subscription])

unless current_user.admin?
  @subscription.user_id = current_user.id
end

respond_to do |format|
  if @subscription.save
    format.html { redirect_to @subscription, notice: 'Subscription was successfully created.' }
    format.json { render json: @subscription, status: :created, location: @subscription }
  else
    format.html { render action: "new" }
    format.json { render json: @subscription.errors, status: :unprocessable_entity }
  end
end
end
4

1 に答える 1

1

私はあなたのエラーがここにあると思います:

# in create
@subscription = Subscription.new(params[:subscription])

パラメータの値は設定しませんsubscription。設定params[:user_id]してparams[:subreddit_id]。次のように、サブスクリプションの作成に使用します。

@subscription = Subscription.new(
  user_id: params[:user_id], 
  subreddit_id: params[:subreddit_id]
)
于 2012-06-16T21:43:23.383 に答える