【发布时间】:2014-01-02 20:45:26
【问题描述】:
我在 Rails 应用程序中使用邮箱 gem 来处理用户之间的私人消息。我有一个单独的页面来查看您的收件箱和一个单独的页面来查看您的垃圾文件夹。 URL localhost/conversations 成功加载了收件箱。我想要一个可以为垃圾加载单独页面的链接,例如 localhost/conversations/trashbin。但是,我无法让 Rails 识别我为此类页面创建的任何路由。
此外,直接转到该 URL 会显示错误:
Couldn't find Conversation with id=trashbin
我了解错误发生的原因,但我不知道如何解决。问题出在我的路线文件上:
resources :conversations do
member do
post :reply
post :trash
post :untrash
get 'trashbin', :action => 'trashbin'
end
end
使用 resources 会导致应用寻找特定对话。除了这种情况外,这在整个应用程序的其余部分中都很有用。我只是想收集所有标记为垃圾的消息。如何编辑此路由文件来完成此操作?
以下是我在索引对话页面上的链接:
<a href="<%= conversations_path %>"> <%= @conversations.count %> Inbox </a> | <a href="<% trashbin_conversations_path %>"> <%= @trash.count %> Trash </a>
谢谢!
编辑:
感谢下面的答案,我已将路线更新到:
resources :conversations do
member do
post :reply
post :trash
post :untrash
end
collection do
get :trashbin
end
end
但是,URL 对话/垃圾箱现在显示未知操作错误:
The action 'trashbin' could not be found for ConversationsController
我的 ConversationsController 明确定义了操作。为什么会出现这个错误?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 routes