我正在尝试在我的 Rails 应用程序中实现出色的 Mailboxer gem。我想在用户个人资料页面上包含一个按钮,该按钮加载表单以向该用户发送私人消息。我尝试使用此问题中发布的代码作为指南,但没有任何运气: Rails mailinger 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