【问题标题】:rails mailboxer undefined method `mailboxer_email'rails邮箱未定义方法`mailboxer_email'
【发布时间】:2014-04-15 00:32:30
【问题描述】:

我正在使用邮箱 gem,我可以向同一个用户(self)发送和接收消息 dexter 可以向 dexter 发送消息,但是当我以 dexter2 登录并向 dexter 发送消息时,我得到未定义的方法错误,当我点击后退按钮并刷新对话,消息在那里,所以消息正在发送,但我一直收到

undefined method 'mailboxer_email" for #<User:0x007f6ed0907040>

messages_controller:

class MessagesController < ApplicationController


 def new
   @user = User.find_by_username(params[:user])
@message = current_user.messages.new

结束

# POST /message/create
def create
@recipient = User.find_by_username(params[:user])
current_user.send_message(@recipient, params[:body], params[:subject])
flash[:notice] = "Message has been sent!"
redirect_to :conversations
end

end

对话/show.html.erb

<%= conversation.subject %>

A conversation with
<% conversation.participants.each do |participant| %>
 <% if participant != current_user %>
  <%= participant.username%>
 <% end %>
<% end %>
<%= content_tag_for(:li, conversation.receipts_for(current_user)) do |receipt| %>
 <% message = receipt.message %>
 <%= message.sender.username %>

 <%= simple_format h message.body %>

 Sent <%= conversation.updated_at.strftime("%a, %m/%e/%Y %I:%M %p") %>

<% end %>

<%= render 'messages/form', conversation: conversation %>

消息/表单

  Reply:
 <%= form_for :message, url: [:reply, conversation] do |f| %>
 <%= f.text_area :body %>
 <%= f.submit "Send Message", class: 'btn btn-primary' %>
 <%= submit_tag 'Clear Reply Box', type: :reset, class: 'btn btn-danger' %>
 <% end %>

消息/new.html.erb

Send a message to

<%= @user.username %>
<%= form_tag({controller: "messages", action: "create"}, method: :post) do %>
<%= label_tag :subject %>
<%= text_field_tag :subject %>
<%= label :body, "Message text" %>
<%= text_area_tag :body %>
<%= hidden_field_tag(:user, "#{@user.username}") %>
 <%= submit_tag 'Send message' %>
<% end %>    

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 mailboxer


    【解决方案1】:

    对于我在文档中阅读的内容,您应该在模型中定义此方法:

    def mailboxer_email(object)
     #return the model's email here
    end
    

    这将确保您的模型具有识别资源所需的邮箱,您可以查看文档here

    初始化程序(config/initializers/mailboxer.rb):

    Mailboxer.setup do |config|
      # ...
      #Configures the methods needed by mailboxer
      config.email_method = :email
    end
    

    【讨论】:

    • 我明白了,如何返回值?
    • 您只需执行object.email 或者您甚至可以定义邮箱将在初始化程序中使用的方法(config/initializers/mailboxer.rb) 我编辑了我的答案以反映更改。
    • object.email 没有给我任何方法错误“电子邮件”,一直在玩弄这部分,如果我输入电子邮件发送的字符串“name@gmail.com”,我似乎无法得到虽然返回值,但我确实有电子邮件字段
    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多