Ruby on rails 在Rails应用程序中实现Mailboxer gem。ActiveRecord::RecordNotFound
我正试图在我的Rails应用程序中实现神奇的Mailboxer gem。我希望在用户配置文件页面上包含一个按钮,用于加载表单以向该用户发送私人消息。我试图用这个问题中发布的代码作为指导,但没有任何运气: . 单击用户页面上的按钮将加载私人消息表单。但是,单击该表单上的“发送”按钮会显示以下错误:Ruby on rails 在Rails应用程序中实现Mailboxer gem。ActiveRecord::RecordNotFound,ruby-on-rails,ruby,activerecord,mailboxer,Ruby On Rails,Ruby,Activerecord,Mailboxer,我正试图在我的Rails应用程序中实现神奇的Mailboxer gem。我希望在用户配置文件页面上包含一个按钮,用于加载表单以向该用户发送私人消息。我试图用这个问题中发布的代码作为指导,但没有任何运气: . 单击用户页面上的按钮将加载私人消息表单。但是,单击该表单上的“发送”按钮会显示以下错误: ActiveRecord::RecordNotFound in MessagesController\create 找不到没有ID的用户 这是相关代码。我将在下面的代码示例中发表我的想法: 消息控制器
ActiveRecord::RecordNotFound in MessagesController\create
找不到没有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
相关路线
resources :messages do
member do
post :reply
post :trash
post :untrash
post :new
end
您需要将电子邮件按钮链接到用户配置文件页面上的
新建消息路径(@user.id)
它可能看起来像是/message/new中的@user
没有从数据库中设置,因为它没有一个params[:user]
变量来正确索引
您的路线应该类似于:
resources :messages do
collection do
post 'new/:user', 'messages#create', as 'new_message_for_user'
end
member do
..
end
end
然后你的按钮看起来像:
= button_to 'Send a message', new_message_for_user(@user), method: :post
我确信我的一些偏好已经显示出来了,但是有一种Rails的方式让人感觉像是在跳绳。此外,如果您已覆盖用户对象,则可能需要更改按钮。谢谢您的回复!我忘了发布用户配置文件页面上的按钮代码。我有一些类似于您发布的内容:
@user)%>
我开始认为问题在于消息/新页面上的提交按钮。当我单击Submit按钮时,出现错误,我浏览器中URL栏中的URL为http://localhost:3000/messages
。它不应该转到/messages/create吗?嘿@james,我已经更新了我的答案,希望能纠正你试图做的一些事情。如果你还需要帮助,请告诉我谢谢你的更新!我不得不跑去上班,但我能尝试一些事情。由于一个错误,我不得不更改路线-它缺少to:关键字。新的\u message\u for\u user方法不存在,因此我坚持使用现有的新\u message\u路径。有问题的线路是post'new/:user',至:'messages#create
。当我点击用户页面上的按钮时,URL看起来像http://localhost:3000/messages/new.3带有活动记录错误的
无法找到没有ID的用户。今晚下班后我会玩得更多。再次感谢!
resources :messages do
collection do
post 'new/:user', 'messages#create', as 'new_message_for_user'
end
member do
..
end
end
= button_to 'Send a message', new_message_for_user(@user), method: :post