Ruby on rails 在Rails应用程序中实现Mailboxer gem。ActiveRecord::RecordNotFound

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的用户 这是相关代码。我将在下面的代码示例中发表我的想法: 消息控制器

我正试图在我的Rails应用程序中实现神奇的Mailboxer gem。我希望在用户配置文件页面上包含一个按钮,用于加载表单以向该用户发送私人消息。我试图用这个问题中发布的代码作为指导,但没有任何运气: .

单击用户页面上的按钮将加载私人消息表单。但是,单击该表单上的“发送”按钮会显示以下错误:

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