2013-02-05 79 views
0

這是一個完整的rails初學者。 我該如何去處理rails中的查詢字符串? 例如爲: www.something.com/movie?sort=title用導軌處理查詢字符串

對於在HAML文件執行的觀點,我怎樣才能讓這個點擊影片名稱將發送一個查詢字符串, 和更重要的是我該如何處理它。我應該在哪裏實現可以使用以下參數訪問該查詢字符串的函數:params。

我已經在這一個多了一天,無法理解是否該查詢字符串將調用控制器函數或幫助器模塊。

我希望我對這個問題已經夠清楚了。 任何幫助將不勝感激。

PS: - 有一個電影表的標題作爲其列之一。

+0

在應用程序中是否有名爲'movies'的控制器和名爲movie.rb的模型?如果可以,我可以編寫一些代碼。如果你不知道什麼是控制器和模型,請訪問http://guides.rubyonrails.org/action_controller_overview.html –

+0

是的,控制器和模型存在.... 但是,它是硬件分配的一部分,所以我寧願自己編寫代碼...但感謝鏈接。 –

回答

0

不知道我真的明白你想要什麼。這適合你嗎?

link_to "My Link", movie_index_path(sort: :title) 

然後訪問參數與params[:sort]

(雅閣movie_index_path與你的路由配置)

+0

此外,這link_to將在%th .... ehre link_to似乎並​​不工作。 –

+0

,如果你可以指向我可以學習更多關於路由配置的地方(閱讀:從開始的所有內容),這將是非常有用的。 –

+0

Rails指南:http://guides.rubyonrails.org/routing.html;) – ByScripts

0

因爲你的問題不集中讓我假設你的問題的一部分。

假設

  1. 你必須在app /控制器控制器名movies_controller.rb/
  2. 文件夾中有一個名爲movie.rb在app/models文件夾

那麼你應該模型告訴Rails將具有路徑/電影的請求路由到movies_controller.rb。這可以通過在配置中添加以下行,如果你調用www.something.com/movies這將調用該方法指數movies_controller.rb完成/ routes.rb中

resources :movies 

的。所以你應該在這裏寫一些代碼來顯示電影。

class MoviesController < ApplicationController 
def index 
    @movies = Movie.all 
end 
end 

然後你應該使用app/views/movies/index.haml文件來顯示電影。有一個鏈接按標題排序電影。

link_to "Sort by title", movies_path(:sort=>"title") 

沒有當點擊鏈接時,用戶將與params現在達到相同的索引方法。你可以得到像下面那樣的排序值。

params[:sort] 

因此,爲了支持排序,您需要稍微更改控制器代碼。

class MoviesController < ApplicationController 
def index 
    if params[:sort] 
    @movies = Movie.order('#{params[:sort]} ASC') 
    else 
    @movies = Movie.all 
    end 
end 
end 

我強烈建議您在提問之前先通過http://guides.rubyonrails.org/index.html