1

現在、Rail 内でのルーティングと URL の構築はやや混乱していることがわかりました。現在、データの表示/フィルタリング時に渡されるタグについて、以下を照合しています。

match '/posts/standard/' => 'posts#standard'
match '/posts/standard/:tags' => 'posts#standard', :as => :post_tag
match '/posts/standard/:tags' => redirect { |params| "/posts/standard/#{params[:tags].gsub(' ', '+')}" }, :tags => /.+/

ただし、ここでは、1 つの状態しか取得できない「skill」パラメーターを追加したいと考えています。ただし、URL 内でこれをどのように構築したいかについて、私は非常に混乱しています。私はただ持つことはできません...

match '/posts/standard/:tags/:skill' => 'posts#standard', as => post_tag, as: => post_skill

だから、私はこの時点で非常に混乱しています.RailsはURLを構築するためのヘルプを提供していますか?

4

1 に答える 1

3

1 つの方法は、メイン ルートを維持することです。

match '/posts/standard/:tags' => 'posts#standard', :as => :post_tag

追加の URL パラメータをパラメータとして処理します。URL は次のようになります。

/posts/standard/1?skill=something

次のように、追加のパラメーターを挿入するのは簡単です

link_to post_tag_path(:skill=> 'something')

そしてあなたのコントローラーはそれからそうするでしょう

def standard
   if params[:skill] == 'something'
     ...
   else 
     ...
   end
end

また、これについてはわかりませんが、ルートの最初の行 'match '/posts/standard/' => 'posts#standard' は、一致があるため、すべてのルートをキャッチする可能性があります。その場合は、最初の行の後に移動してください。

于 2012-08-06T21:34:49.693 に答える