0

アプリケーションに独自のユーザーメッセージング機能を実装していますが、を保持するのに問題がありreceiver_idます。

ユーザーモデル:

class User < ActiveRecord::Base
    has_many :tickets
    has_many :sent_messages, :class_name => 'Message', :foreign_key => 'sender_id', :dependent => :destroy
    has_many :received_messages, :class_name => 'Message', :foreign_key => 'receiver_id', :dependent => :destroy
end

メッセージモデル:

class Message < ActiveRecord::Base
    belongs_to :sender, :class_name => 'User', :foreign_key => 'sender_id'
    belongs_to :receiver, :class_name => 'User', :foreign_key => 'receiver_id'
end

メッセージコントローラー:

def new
    @user = User.find( params[:user_id] )
    @message = Message.new( 
      :receiver => @user )
end

def create
    @message = current_user.sent_messages.create( params[:message] )
    redirect_to( tickets_path, :message => 'Message has been sent.' )
end

receiver_iddb内はnullのままです。

助けてくれてありがとう!

編集

ここで質問をルーティングします-チケットにはメッセージを送信できるユーザーがいます-レールメッセージング

4

1 に答える 1

1

HTTP はステートレスであるため、各リクエストはその前のリクエストについて何も知りません。したがって、コントローラーを呼び出すときに属性を設定しても、それ自体Message.newはリクエストに引き継がれませんcreate。それを含む非表示のフォーム フィールドが必要です。を使用していると仮定するとform_for、次のようになります。

<%= f.hidden_field :receiver_id %>
于 2012-05-01T05:05:34.047 に答える