看了很多资源,似乎无法解决这个问题。
我正在使用BinaryMuse基于此代码的消息传递系统:
https://github.com/BinaryMuse/so_association_expirement/compare/53f2263...master
它没有响应功能,所以我正在尝试构建它。
我将以下代码添加到UserConversations控制器:
def update
@user = User.find params[:user_id]
@conversation = UserConversation.find params[:id]
@conversation.user = current_user
@message = @conversation.messages.build
@message.conversation_id = @conversation
@message.save
redirect_to user_conversation_path(current_user, @conversation)
end
以下是UserConversations#show view:
<%= form_for(@conversation) do |f| %>
<%= f.fields_for :messages do |m| %>
<div>
<%= m.label :body %><br />
<%= m.text_area :body %>
</div>
<% end %>
<%= f.submit %>
使用我所拥有的,创建一个具有正确conversation_id的新消息。但是,它没有附加body或user_id。
任何想法我做错了什么?
提前感谢您的帮助!
答案 0 :(得分:1)
BinaryMuse(我正在使用的原始代码的创建者)非常棒,可以查看他的旧代码并添加一些内容来回复。这有多棒?这是他的东西的链接:
P.S。感谢Patrick,我非常感谢您的见解!
答案 1 :(得分:0)
这些行使用正确的conversation_id创建新邮件。您的问题源于不涉及表单中传递的参数。
@message = @conversation.messages.build
@message.conversation_id = @conversation
@message.save
理想情况下,您可能需要执行类似
的操作def update
@user = User.find params[:user_id]
@conversation = UserConversation.find params[:id]
@conversation.user = current_user
if @conversation.update_attributes(params[:conversation])
redirect_to user_conversation_path(current_user, @conversation)
else
render(:action=>'edit')
end
end
让update_attributes处理更新'消息'。确保您在accepts_nested_attributes_for
模型中指定了Conversation
。
有关详细信息,请查看