Rails路由 - 未显示操作

时间:2009-08-06 21:49:51

标签: ruby-on-rails routing

我有两条路线:

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'动作。

3 个答案:

答案 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 %>

但这需要你做一点或重新管道。