1

我有一个文章资源,并为它定义了资源丰富的路线。我想创建一个显示当前用户文章的简单页面。我知道可以通过添加另一个操作来做到这一点,例如“搜索”到文章控制器,该控制器将包含搜索具有相同用户 ID 的文章的自定义代码。对于路线:

resources :articles do
  get 'search'
end

但我不确定在这种情况下添加自定义操作是否是个好主意。我想我仍然可以使用索引操作(显示所有文章)并从 url 传递某种参数,以便它可以区分用户是想查看所有文章还是只查看他自己的文章。但我不确定如何做到这一点。任何帮助都会很棒。谢谢!

4

2 回答 2

1

您可以使用查询字符串来传递参数。看到这里 所以你可以在你的控制器中传递类似的东西.../articles?user_id=2 ,只需根据 user_id 参数更改行为。

于 2012-08-02T11:27:26.943 回答
1

您无需为其创建新的操作/视图。

您可以添加一个小表单来过滤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 %> 

比在你的控制器中:

def index
  if params[:search] == 'my'
    @articles = current_user.articles
  else
    @articles = Article.all
end
于 2012-08-02T11:38:35.713 回答