サインイン後に送信する必要のあるフォームがありますが、すべての閲覧者がフォームを表示して記入することができます。したがって、セッション変数にパラメータを保存します。サインイン後、パラメータを正常に保存します。問題は、user_id(外部キー)を追加して他のパラメータの横に保存することです(ログインする前に、user_idが不明です)。私のコントローラのコードの パート:Rails:Deviseのサインイン後にストア(マージ)パラメータ
def create
if current_user.nil?
session[:trip] = params
redirect_to new_user_registration_path
else
@trip = Trip.new(trip_params)
respond_to do |format|
if @trip.save
...
private
def set_trip
@trip = Trip.find(params[:id])
end
def trip_params
params.require(:trip).permit(:from, :to, :departure_date, :arrival_date, :user_id)
end
私が述べたように、このコードが正常に新しいフォームパラメータを格納します。 (挿入またはマージ)current_user.id
を追加するには、私はseparetelyこれらのさまざまな方法を試してみました:
@trip = Trip.new(trip_params.merge(user_id: => current_user.id)
@trip = Trip.new(trip_params)
@trip.user_id = current_user.id
@trip = current_user.Trip.new(trip_params)
@trip = current_user.trips.new(trip_params)
を、私はこれらの方法のすべてをテストしたが、まだきましたuser_idは保存されていません!! Rails4の問題とその解決方法を理解してください。
生成されたパラメータを投稿できますか? – Pavan
@パヴァンどのパラメータを意味していますか?質問を編集してパラメータを追加しましたが、パラメータのリストには関係しないと思います。 –
'trip_params'から' user_id'を削除し、チェックしてみてください。 – Pavan