2012-08-06 3 views
1

지금 당장 레일에서 URL을 구성하는 것이 다소 혼란 스럽습니다. 현재 데이터를 표시/필터링 할 때 전달되는 태그에 대해 다음과 일치합니다.레일에서 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 => /.+/ 

그러나 지금은 하나의 상태 만 취할 수있는 '스킬'매개 변수를 추가하고 싶습니다. 그러나, 나는 내 URL 내에서 이것을 어떻게 구성하는지에 대해 매우 혼란 스럽다. 나는 단순히 레일 URL의 구축을위한 도움의 모든 종류를 제공 않습니다 ... 그래서, 내가 정말이 시점에서이 혼란스러워하고

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

를 가질 수 없습니다?

답변

3

한 가지 방법은 당신의 주요 통로를

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

을 유지하고 PARAMS로 추가 URL의 PARAMS을 처리하는 것입니다. URL은 같을 것이다 :

/posts/standard/1?skill=something 

과 같은

link_to post_tag_path(:skill=> 'something') 

에 의해 같은 추가 PARAMS을 주입 할만큼 쉽고 컨트롤러가 다음 또한

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

을 할 것,하지 이것에 대해서는 확실하지만 경로 일치 '/ posts/standard /'=> 'posts # standard'의 첫 번째 줄은 일치하는 항목이 있으므로 모든 경로를 포착 할 수 있습니다. 이 경우 첫 번째 줄로 이동하기 만하면됩니다.