投稿のショーフォームにフォームを置いていただけませんか?次に、フォームの値をメッセージ作成アクションに渡しますか?
./app/controllers/message_controller.rb
class MessageController < ApplicationController
def create
@message = Message.create(create_message_params)
@message.send
end
private
def create_message_params
{}.tap do |h|
h[:from_user_id] = params[:from_user_id]
h[:to_user_id] = params[:to_user_id]
h[:text] = params[:text]
end
end
end
./app/controllers/post_controller.rb
class PostController < ApplicationController
def show
@post = Post.find(params[:id])
@message = Message.new
end
end
./app/views/posts/show.html.erb
<!-- omitting other post show html, showing just the message form -->
<% form_for(@message, url: messages_path do |f| %>
<%= hidden_field_tag(:to_user_id, @post.author.id ) %>
<%= text_area_tag(:text, @message.text) %>
<br/>
<%= f.submit("Send Message") %>
<% end %>
コメントから2013.08.25を編集してください。メッセージを別のビューに表示したいという願いがありました
まず、投稿の「表示」ビューにリンクがあります。
<%= link_to "Send a message", new_messages_path(to_user_id: @post.author.id) %>
次に、新しいアクションと、受信した を受け取りto_user_id
、おそらく非表示フィールドに格納するビューを作成する必要があります。次に、message_path
そのメッセージ フォームを送信して投稿するto_user_id
と、 とメッセージが current_user.id と結合されます。
それは理にかなっていますか?