2013-04-02 23 views
1

我想實現一個簡單的私人消息系統使用rails,並且它工作正常,但是當構建答覆系統時,我得到錯誤。這裏是代碼:軌道上的表單提交0123路徑錯誤

def show 
    @message = current_user.messages.find(params[:id]) 
    if @message != nil 
     @sender = User.find(@message.id).email 
     @replies = @message.replies 
     @reply = Reply.new 
     @reply.message_id = params[:id] 
     @reply.user_id = current_user.id 
    else 
     index_redirect 
    end 

def reply 
    @reply = Reply.new(params[:reply]) 
    if @reply.save 
     set_flash "Reply sent" 
     show_redirect 
    else 
     set_flash "Error, please try again" 
     show_redirect 
    end 
    end 

和視圖:

<h1>Messages#show</h1> 
<h2>replies</h2> 
<div> 
    <%- @replies.each do |reply| %> 
     <%= content_tag :span, reply.content %> 
     <%= content_tag :span, reply.created_at %> 
     <%= content_tag :span, User.find(reply.user_id).email %> 
    <% end %> 

    <%= form_for @reply, :as => :reply, :url => { :action => :reply } do |reply| %> 
     <%= reply.text_area :content %> 
     <%= reply.submit "Reply" %> 
    <% end %> 
</div> 

最後的路由:

resources :messages do 
    collection do 
     delete 'destroy' 
     post 'reply' 
    end 
    end 



messages DELETE /messages(.:format)   messages#destroy 
     reply_messages POST /messages/reply(.:format)  messages#reply 
        GET /messages(.:format)   messages#index 
        POST /messages(.:format)   messages#create 
     new_message GET /messages/new(.:format)  messages#new 
     edit_message GET /messages/:id/edit(.:format) messages#edit 
      message GET /messages/:id(.:format)  messages#show 
        PUT /messages/:id(.:format)  messages#update 
        DELETE /messages/:id(.:format)  messages#destroy 

但是在表單提交我得到這個錯誤:

No route matches {:action=>"show", :controller=>"messages"}

感謝。

回答

1

我想,當你有你的表格,它發送一個POST到一個動作,只接收GETs,這就是爲什麼你得到你的錯誤。 在這種情況下,您需要發送正確的操作create(因爲它接受POST)或將:method設置爲:get

在您看來,以下是將該表格更改爲get方法的示例。

<%= form_for @reply, :as => :reply, :url => { :action => :reply }, :html => {:method => :post} do |reply| %> 
    <%= reply.text_area :content %> 
    <%= reply.submit "Reply" %> 
<% end %> 
+0

實際行動只有臨危'POSTS'但這並沒有讓'GETS',''資源:信息做收集 做 刪除 '摧毀' 後 '答覆' 結束 end' – Wahtever

+0

嘗試用只是'

' – Vinay