2012-01-10 29 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