0

ユーザーが投稿を作成し、他のユーザーがこれらの投稿にコメントできるようにするテストアプリがあります。現在、ユーザーが投稿から別のユーザーにメッセージを送信する方法を作成しようとしていますが、フォームで問題が発生しています。ユーザー B がユーザー A の投稿内でユーザー A に PM を送信したい場合、メッセージにデータが事前に入力されたフォームが必要です。すなわち。

宛先: @user.username 差出人: @current_user.username

メッセージは独自のモデルとコントローラーであるため、ユーザーをリダイレクトして、そのユーザー固有の情報を保持することはできません。

4

1 に答える 1

0

投稿のショーフォームにフォームを置いていただけませんか?次に、フォームの値をメッセージ作成アクションに渡しますか?

./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 と結合されます。

それは理にかなっていますか?

于 2013-08-25T02:19:40.060 に答える