所以我有一个ChatsController,从我的索引操作,我正在尝试重定向到自定义操作,“决定”:
def index
@chat = Chat.customfind(params[:search])
if(@chat.is_a?(Array))
session[:chats] = @chat
redirect_to :action => 'decide'
else
respond_to do |format|
format.html { redirect_to @chat if !@chat.nil? }
end
end
def decide
@chats = session[:chats]
@choice = Chat.find(params[:id])
redirect_to @choice if !@choice.nil?
end
..其中@choice将由决定页面上的表格的参数决定。但由于某种原因,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"}
..............
任何人都可以解释如何解决这个问题吗?
修改: 我假设这是你想要的......我的routes.rb的相关部分:
match "chats/decide" => "chats#decide"
resources :chats do
member do
post 'send_message'
end
end
get "chats/logout"
..是的,它有点像一个大杂烩:/
答案 0 :(得分:1)
您似乎正在努力实现以下目标:
/chats/decide
,以便用户可以选择一个我会按如下方式实现:
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)当您列出 decision.html.erb 文件中的可用聊天时,请将它们直接链接到相应的show
链接。
4)明确了解聊天#index :
中的重定向redirect_to :controller => 'chats', :action => 'decide'
您的聊天<决定操作不应根据是否收到id
而做出不同的响应。您可以直接链接到该视图中的特定聊天。