2009-08-06 78 views
0

我有兩個途徑:Rails的路由 - 未顯示的動作

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

您可以添加更多詳細講述你想達到什麼樣的?有可能是做這件事的多個軌道-Y方式。 – jonnii 2009-08-06 22:23:03

回答

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

但是,這將需要一點或重新管道你的一部分。

0

看起來這條路線明確地將/all_devices映射到initialize_devices action

也許你應該設置一些片的第一次initialize_devices達到並做後續請求沒有特定的會話信息。

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