我有两条路线:
map.all_devices '/all_devices', :controller => 'all_devices', :action => 'initialize_devices'
map.show_user_date_select '/all_devices', :controller => 'all_devices', :action => 'show_user_date_select'
我希望用户点击按钮,执行show_user_date_select操作,然后重定向回mysite.com/all_devices。上面的路由确实有效,但总是将用户发送到initialize_devices,这会重置'show_user_date_select'动作。
答案 0 :(得分:1)
看起来您将这两者映射到同一路线。由于你将initialize_devices放在最上面,它会呈现一个优先级较高的,这就是为什么你总能得到它。
你可能在路由中想要的是这样的东西:
map.all_devices '/all_devices', :controller => 'all_devices', :action => 'index'
然后有一个表单提交的路径,例如/ all_devices / show_user_date_select,然后重定向到/ all_devices:
def show_user_date_select
# do stuff here
redirect_to all_devices
end
答案 1 :(得分:0)
看起来该路线明确地将/all_devices
映射到initialize_devices action
。
也许您应该在第一次达到initialize_devices
时设置一些特定于会话的信息,并且不会对后续请求做任何事情。
答案 2 :(得分:0)
这些路线对我来说有点奇怪。尝试类似:
map.resources :all_devices, :member => { :all_devices => :get, :show_user_date_select => :get }
然后在你的观点中:
<%= link_to "All Devices", path_to_all_devices_all_devices %>
<%= link_to "Show Dates", path_to_show_user_date_select_all_devices %>
链接名称很糟糕,但应该适用于您现有的应用。我宁愿看到:
map.resources :devices, :member => { :all => :get, :select => :get }
<%= link_to "All Devices", path_to_all_devices %>
<%= link_to "Show Dates", path_to_select_devices %>
但这需要你做一点或重新管道。