1

私は Article リソースを持っており、それに対して機知に富んだルートを定義しました。現在のユーザーの記事を表示するシンプルなページを作成したいと考えています。同じユーザーIDを持つ記事を検索するカスタムコードを含む記事コントローラーに「検索」などの別のアクションを追加することで、これを行うことができることを認識しています。ルートの場合:

resources :articles do
  get 'search'
end

しかし、この場合、カスタム アクションを追加することが良い考えかどうかはわかりません。私はまだ index アクション (すべての記事を表示する) を使用し、URL から何らかのパラメーターを渡して、ユーザーがすべての記事を見たいのか、自分の記事だけを見たいのかを区別できると考えています。しかし、これがどのように行われるのか正確にはわかりません。どんな助けでも素晴らしいでしょう。ありがとう!

4

2 に答える 2

1

クエリ文字列を使用してパラメーターを渡すことができます。hereを参照してください。 したがって、コントローラーで次のようなものを渡すことができ.../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 に答える