0

変数をコントローラーに渡すことはできますが、私の方法は間違っていると思います。紹介内に返信をネストしたルートで、返信を紹介に適用できる紹介があります。

user.id と referral.id を返信コントローラーに渡して、データベースに書き込もうとしています。User.id は書き込み中ですが、両方の変数をデータベースに入れることができません。

私がチェックしたところ、2 つの変数がコントローラーに送られています。メソッドを正しく実行していません。たくさんの組み合わせを試しましたが、私は混乱しています。

返信 コントローラー

  class RepliesController < ApplicationController
     def new
      @user_id = params[:user_id]
      @user_id.to_s
      @reply = Reply.new
      @referral = Referral.find(params[:referral_id])
      @reply = @referral.replies.build(@user_id, :referral_id)
      respond_to do |format|
        if @reply.save
          format.html { redirect_to referrals_path, notice: 'Replied' }
        else
          format.json { render json: @reply.errors, status: :unprocessable_entity }
        end
      end
    end
  end

ルート

    resources :referrals do
      resources :replies
    end

紹介に返信するボタン これは、インデックス ページに紹介を入力しているパーシャルです。

  = link_to '<i class="icon-ok"> Reply</i>'.html_safe, new_referral_reply_path(:referral_id => referral.id, :replier_id => current_user.id)

「投稿」タイプのメソッドの「いいね」を達成しようとしていますが、返信テーブルにユーザーの ID と紹介があります。基本的に、リンクから 2 つの Params を db に渡す必要があります。

今、私はこのエラーを取得しています (http://ローカルホスト:3000/referrals/1/replies/new?user_id=2)

ReplyController#new の NoMethodError

"2":String に対する未定義のメソッド `stringify_keys': Rails.root: /Users/laszlo/Documents/rails_projects/GemPort

アプリケーション トレース | フレームワーク トレース | フルトレース app/controllers/replies_controller.rb:7:in `new'

4

1 に答える 1

0

db に書き込むときに、params を列に渡すだけで簡単であることがわかりました。

返信コントローラー:

  class RepliesController < ApplicationController
     def new
      @referral = Referral.find(params[:referral_id])
      @reply = @referral.replies.new(:user_id => params[:user_id], :referral_id => params[:referral_id])
      respond_to do |format|
        if @reply.save
          format.html { redirect_to referrals_path, notice: 'Replied' }
        else
          format.json { render json: @reply.errors, status: :unprocessable_entity }
        end
      end
    end
  end

このリンクは私を助けてくれました: 未定義のメソッド `stringify_keys!' レール上のルビー

于 2013-05-11T04:38:38.190 に答える