2013-12-08 60 views
0

我正試圖在我的Rails應用程序中實現夢幻般的Mailboxer gem。我想在加載表單的用戶個人資料頁面上包含一個按鈕,以便向該用戶發送私人消息。我試圖用這個問題中發佈的代碼作爲指導,沒有任何運氣: Rails mailboxer gem, send message to user using form在Rails應用中實現Mailboxer gem。 ActiveRecord :: RecordNotFound

點擊用戶頁面上的按鈕將加載私人信息表單。但是,單擊該表格上的發送按鈕,將顯示以下錯誤:

ActiveRecord::RecordNotFound in MessagesController#create Couldn't find User without an 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 

new.html.erb(郵件視圖 - 新)

<%= form_for(@message) do |f| %> 
      <div>Subject 
      <%= f.text_field :subject %></div> 
      <div>Message 
      <%= f.text_area :body%></div> 
      <%= f.hidden_field(:user, :value => @user.id) %> 
      <p><%= f.submit 'Send message'%></p> 
     <% end %> 

的Mailboxer文檔推薦 current_user.send_message(@user, params[:body], params[:subject])(我註釋掉了)創建函數,但然後我無法通過在「新」功能GET獲得的用戶。我試圖使用新函數將它發送到創建函數,但我完全卡住了。爲什麼我的當前創建函數不能從新函數中找到用戶ID?

僅供參考,這裏是一個鏈接到創業板上市的文檔: https://github.com/ging/mailboxer

謝謝!

編輯:用戶的個人資料頁上的按鈕代碼

<%= button_to "Send a message", new_message_path(:user => @user) %> 

相關路線

resources :messages do 
    member do 
     post :reply 
     post :trash 
     post :untrash 
     post :new 
    end 

回答

1

你需要的電子郵件按鈕鏈接到new_message_path(@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-感覺就像你跳過一樣。此外,如果您已覆蓋您的用戶對象,則可能需要更改該按鈕。

+0

感謝您的回覆!我忘了發佈用戶個人資料頁面上的按鈕代碼。我有類似於你發佈的內容:'<%= button_to「發送消息」,new_message_path(:user => @user)%>' – winston

+0

我開始認爲問題是在消息/新一頁。當我點擊Submit按鈕,並且出現錯誤時,瀏覽器URL欄中的URL是'http:// localhost:3000/messages'。不應該去/消息/創建? – winston

+1

嗨@詹姆斯,我已經更新了我的答案,希望能夠糾正你正在嘗試做的一些事情。讓我知道如果你仍然需要幫助 – toobulkeh

相關問題