2012-08-02 76 views
1

我有一篇文章資源併爲其定義了足智多謀的路線。我想創建一個顯示當前用戶的文章的簡單頁面。我知道可以通過添加另一個操作來實現,例如對文章控制器進行「搜索」,該控制器將包含搜索具有相同用戶標識的文章的自定義代碼。而對於路線:Rails控制器 - 添加自定義操作

resources :articles do 
    get 'search' 
end 

但我不確定在這種情況下添加自定義操作是否是一個好主意。我想我仍然可以使用索引操作(顯示所有文章)並傳遞來自url的某種參數,以便可以區分用戶是想要查看所有文章還是僅查看他自己的文章。但我不確定如何做到這一點。任何幫助都會很棒。謝謝!

回答

1

您可以使用查詢字符串傳遞參數。見here 所以你可以通過類似.../articles?user_id=2 在你的控制器中,根據user_id參數改變行爲。

+0

您可以添加一個小型過濾all articles或僅my articles,例如:

<%= form_tag articles_path, method: :get do %> <%= radio_button_tag :search, "all", :checked => true %> <%= label_tag :all %><br /> <%= radio_button_tag :search, "my" %> <%= label_tag :my_articles %><br /> <%= submit_tag "filter", name: nil %> <% end %> 

比控制器。你也可以通過使用嵌套的資源路徑來做類似的事情,並在用戶資源下添加一個嵌套的文章資源,但這可能有點矯枉過正。 – davidrac 2012-08-02 11:32:56

+0

太好了,就是我需要的。我會通過link_to方法傳遞它,並修改控制器的索引操作。謝謝! – maru 2012-08-02 12:15:03

1

你不需要爲它創建一個新的動作/視圖。 BTW

def index 
    if params[:search] == 'my' 
    @articles = current_user.articles 
    else 
    @articles = Article.all 
end 
+0

嗯..我現在不需要過濾器。基本上,我只是想要一個鏈接到頁面,所以我在想如果一個參數可以在URL中傳遞。 – maru 2012-08-02 11:52:13