2010-01-14 45 views
0

我試圖通過link_to發送一個變量,而不使用Ruby on Rails中的url查詢,從一個控制器的索引視圖用於另一個控制器的索引。基本上,我需要將Turma.id(學校類ID)傳遞給Elementos_turma(類中的人)控制器,以便我可以使用它並過濾索引:ElementosTurma.find(:all,:conditions => {:turma_id => xxxxx}),以顯示所選類的人物。在Ruby on Rails中通過link_to發送一個沒有url查詢的變量

它有可能嗎? 也許不使用會話變量? 也許將變量發送到第一個控制器上的方法,將其發送給其他控制器? (如果是這樣怎麼樣?不是很明智......)

回答

0

不需要一個特殊的方法來獲得你需要的信息,路線的魔力會做。

在你routes.db文件,你應該能夠確定這樣的事情,

map.resources :class, :has_many => :students 

然後,如果你運行「耙路線」你應該會看到類似這樣的

class_students GET /classes/:class_id/students(.:format) {:controller=>"students", :action=>"index"} 
一個路線

您可以撥打這條道路在你看來,像這樣

class_students_path(class_id) 

然後在您的控制器,你將有機會獲得以參數[:class_id]

路線的名稱不是很漂亮,但這應該工作。

編輯--------------------------------------

根據您的意見,您不能使用map.resources出於某種原因或其他...

map.class_students '/:class_id/students', :controller => 'students', :action => 'index' 

這將產生在你的控制器提供你的看法同樣的路線,同樣的PARAM。

話雖這麼說,我不知道怎麼的服務器錯誤可以使用map.resources

+0

但是我可以在沒有資源的情況下使用它嗎? 由於服務器錯誤,我們仍然無法修復,並由於其他開發人員想要去舊學校(沒有資源...)。 – Muralha 2010-01-14 01:18:05

+1

你沒有資源?你正在運行一個古老的Rails版本嗎?什麼樣的服務器錯誤會影響? – 2010-01-14 01:21:28

+0

要修復這個錯誤,管理員必須手動修復它(ruby 1。9/rails 2.3.4 bug ... http://stackoverflow.com/questions/1681685/cant-work-with-more-recent-gems)它是一個敏感的服務器,所以沒有運氣,直到我們完成工作並將其移至另一臺服務器。 其他開發者希望所有的東西都像鐵軌1.8.X ...(老學校...也沒有運氣太) 我還可以使用這些資源嗎? 順便說一句,謝謝你的幫助Ethan。 – Muralha 2010-01-14 01:42:05

0

您無法通過鏈路傳輸數據禁止你不包括在鏈接數據。

但是,它聽起來像你只需要使用嵌套的資源。 (因爲我會說英語,所以我不打算處理另一種語言並且做我想要的東西。)如果您想成爲RESTful,您希望發送給人們的URL應該看起來更像這樣:

/classes/1/people/ 

這是「Rails方式」,表示您希望讓第1類中的用戶獲得成員,而Rails提供了內置的路由方法以使其變得簡單。請參閱Rails指南中的Rails Routing from the Outside In文章。

+0

我認爲我們用嵌套資源得到的一個問題是,我們的一個方法不適用於不是標準名稱方法(editar == edit或show == ver),而其他所有方法都在工作...... – Muralha 2010-01-14 02:33:49