Ruby on rails Rails将_重定向为不工作,重定向为显示而不是自定义操作

Ruby on rails Rails将_重定向为不工作,重定向为显示而不是自定义操作,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,redirecttoaction,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Redirecttoaction,因此,我有一个聊天控制器,从我的索引操作,我试图重定向到一个自定义操作,“decision”: …其中@choice将由decise页面上表单的参数决定。但出于某种原因,Rails没有重定向以决定,而是重定向以显示: Started GET "/chats/decide" for 127.0.0.1 at 2012-03-14 17:13:36 -0400 Processing by ChatsController#show as HTML Parameters: {"id"=>"

因此,我有一个聊天控制器,从我的索引操作,我试图重定向到一个自定义操作,“decision”:

…其中@choice将由decise页面上表单的参数决定。但出于某种原因,Rails没有重定向以决定,而是重定向以显示:

Started GET "/chats/decide" for 127.0.0.1 at 2012-03-14 17:13:36 -0400
  Processing by ChatsController#show as HTML
  Parameters: {"id"=>"decide"}
  ..............
有人能解释一下如何解决这个问题吗

编辑: 我想这就是你想要的。。。my routes.rb的相关部分:

match "chats/decide" => "chats#decide"

resources :chats do
  member do
    post 'send_message'
  end
end

get "chats/logout"

…是的,这有点大杂烩:/

看来您正在努力实现以下目标:

  • 查找与给定搜索字符串匹配的所有聊天
  • 如果找到1个聊天室,请重定向到该聊天室
  • 如果找到2个以上的聊天记录,请重定向到
    /chats/decise
    ,以便用户可以选择一个
我将按以下方式实施:

resources :chats do
  member do
    post :send_message
  end

  collection do
    get :decide # Produces the '/chats/decide/' route
  end
end
1) 更新routes.rb如下:

resources :chats do
  member do
    post :send_message
  end

  collection do
    get :decide # Produces the '/chats/decide/' route
  end
end
2) 将您的聊天#决定操作更改为:

def decide
  @chats = session[:chats]
end
3) 当您在decise.html.erb文件中列出可用聊天时,请将它们直接链接到相应的
show
链接

4) 在聊天索引中明确说明您的重定向:

redirect_to :controller => 'chats', :action => 'decide'

您的聊天#决定操作不应根据是否接收到
id
而做出不同的响应。您可以直接链接到该视图中的特定聊天室。

显示您的路线。rb文件您是否试图让
/chats/decise/:id
工作?那么为什么“收集”可以工作呢?与“member do”或类似get“chats/actionname”的内容相反,collection希望列出一组对象,从而提供路由
/chats/decise
member
希望列出单个对象,从而提供路由
/chats/:chat\u id/decise