Rails アプリに素晴らしい Mailboxer gem を実装しようとしています。ユーザー プロファイル ページに、フォームをロードしてそのユーザーにプライベート メッセージを送信するボタンを含めたいと考えています。この質問に投稿されたコードを運のないガイドとして使用しようとしました: Rails mailboxer gem, send message to user using form。
ユーザー ページのボタンをクリックすると、プライベート メッセージ フォームが読み込まれます。ただし、そのフォームの [送信] ボタンをクリックすると、次のエラーが表示されます。
ActiveRecord::RecordNotFound in MessagesController#create
Couldn't find User without an ID
関連するコードは次のとおりです。コードサンプルの下に私の考えを投稿します。
メッセージコントローラー
class MessagesController < ApplicationController
def index
end
# GET /message/new
def new
@user = User.find(params[:user])
@message = current_user.messages.new
# display form
end
# POST /message/create
def create
@user = User.find(params[:user])
@message = current_user.connections.build(params[:message])
#current_user.send_message(@user, params[:body], params[:subject])
end
end
new.html.erb (メッセージ ビュー - 新規)
<%= form_for(@message) do |f| %>
<div>Subject
<%= f.text_field :subject %></div>
<div>Message
<%= f.text_area :body%></div>
<%= f.hidden_field(:user, :value => @user.id) %>
<p><%= f.submit 'Send message'%></p>
<% end %>
Mailboxer のドキュメント
current_user.send_message(@user, params[:body], params[:subject])
では、create 関数で (私はコメントアウトしました) を使用することを推奨していますが、「new」関数で GET を使用して取得したユーザーを引き継ぐことができません。新しい関数を使用して作成関数に送信しようとしていますが、完全に行き詰まっています。現在の作成関数が新しい関数からユーザー ID を見つけられないのはなぜですか?
参考までに、gem ドキュメントへのリンクを次に示します: https://github.com/ging/mailboxer
ありがとう!
編集: ユーザー プロファイル ページのボタン コード
<%= button_to "Send a message", new_message_path(:user => @user) %>
関連ルート
resources :messages do
member do
post :reply
post :trash
post :untrash
post :new
end