2012-01-10 51 views
1

我在应用程序中使用了acts-as-messageable,这是一款rails gem。未定义的方法`acts_as_messageable_messages_path`

然而,在我的messages_controller我有

def new 
    @message = ActsAsMessageable::Message.new 
end 

和我认为我有

<%= form_for(@message) do |f| %> 

其中引发以下错误

未定义的方法`acts_as_messageable_messages_path”

我不确定为什么这是发生在宝石。

+0

请发布链接到您正在使用的gem的github主页。 – 2012-01-10 12:20:21

+0

@Planetpluto请在下面看到我的回答,看看这种方法是否会起作用 – iwasrobbed 2012-01-12 04:22:56

回答

2

尽量明确地说明你要的形式来实现点什么路径(这应该是messages#create动作):

<%= form_for(@message) :url => messages_path, :method => :post do |f| %> 
    <div class="field"> 
    <%= f.label :to %><br /> 
    <%= f.email_field :to %> 
    </div> 
    <div class="field"> 
    <%= f.label :topic %><br /> 
    <%= f.text_field :topic %> 
    </div> 
    <div class="field"> 
    <%= f.label :body %><br /> 
    <%= f.text_area :body %> 
    </div> 

    <button type="submit" class="btn primary">Send</button> 
    <button type="reset" class="btn">Cancel</button> 
<% end %> 

这是假设你有这样的在你的routes.rb文件:

resources :messages 

此外,请确保您通过所需字段ActsAsMessageablehttps://github.com/LTe/acts-as-messageable/wiki/Example-controller

+0

这解决了错误,但是:param不发送。这意味着当我有@to = User.find_by_email(params [:to])时,我得到一个错误,因为它不返回用户 – Vasseurth 2012-01-12 05:21:54

+0

所以':to'被传入控制器,但是'User.find_by_email params [:to])'返回nil?你确定你传递的电子邮件存在于数据库中吗? – iwasrobbed 2012-01-12 05:26:52

+0

是的。没有任何参数传递正确,这意味着如果我将@to替换为User.find_by_email([email protected])并且具有参数[:topic],那么消息的主题将不会被我设置为。参数不被接受或发送或某物。 – Vasseurth 2012-01-13 04:11:11

0

这是因为gem不添加路由,而表单助手尝试生成发送URL。 请用rake routes核对。

+0

如何将它添加到路线?它没有说明github中的路由 – Vasseurth 2012-01-10 05:07:00

+0

您使用的是哪个版本的Rails? – 2012-01-10 19:32:52

+0

我使用Rails 3.1的版本 – Vasseurth 2012-01-10 22:41:28