2011-07-17 17 views
0

私のアプリでは、ユーザーには会話があり、会話にはメッセージがあります。メッセージは、ユーザー(著者として)と会話の両方に属します。Rails:新しいネストされたリソースを作成するにはどうすればよいですか?

新しいメッセージを作成します。これは私が今MessagesControllerで使用しているコードです。

def new 
    @user = current_user #currently logged in user 
    @conversation = Conversation.find(params[:id]) 
    @message = @conversation.messages.build 
end 

def create 
    @conversation = Conversation.find(params[:conversation_id]) 
    @message = @conversation.messages.build(params[:message]) 
    if @message.save 
    redirect_to username_conversation(current_user, @message.conversation) 
    else 
    redirect_to root_url 
    end 
end 

params [:message]にメッセージの内容(「content」=>「私はSpartacusです」)が含まれています。

これは機能しません(新しいメッセージを作成するときにユーザー/作成者を指定していない可能性があります)。この作業をどのようにしてRailsにするのですか?

ありがとうございました。

答えて

3

ユーザーを手動で設定する必要があります。 Railsが提供する短いメソッドを使用して設定できるプロパティは1つだけです。

def new 
    @user = current_user #currently logged in user 
    @conversation = Conversation.find(params[:id]) 
    @message = @conversation.messages.build 
    @message.user = user 
end 

def create 
    @conversation = Conversation.find(params[:conversation_id]) 
    @message = @conversation.messages.build(params[:message]) 
    @message.user = current_user 
    if @message.save 
    redirect_to username_conversation(current_user, @message.conversation) 
    else 
    redirect_to root_url 
    end 
end 
+0

編集:現在作業中です。先端に感謝します。 – alste

+0

受け入れることを忘れないでください! –

関連する問題