我有一个文章资源,并为它定义了资源丰富的路线。我想创建一个显示当前用户文章的简单页面。我知道可以通过添加另一个操作来实现,例如“搜索”到文章控制器,它将包含搜索具有相同用户ID的文章的自定义代码。对于路线:
resources :articles do
get 'search'
end
但我不确定在这种情况下添加自定义操作是否是一个好主意。我想我仍然可以使用索引操作(显示所有文章)并从URL传递某种参数,以便它可以区分用户是想要查看所有文章还是只是他自己的文章。但我不确定如何做到这一点。任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
您可以使用查询字符串传递参数。见here
所以你可以传递类似.../articles?user_id=2
的内容
在您的控制器中,只需根据user_id参数更改行为。
答案 1 :(得分: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