2012-10-08 1 views
0

바보 같은 질문 ... 내 페이지/뷰/프로젝트/new.html.erb 파일에 두 개의 다른 기능을 가진 두 개의 폼이 있습니다. 지금까지는 새 프로젝트를 "만들"수있는 옵션으로 구현했습니다. 나는 뭔가를 같은 페이지에 표시되는 레코드를 정렬하는 또 다른 기능을 추가 할 :Ruby on Rails routes.rb의 페이지 당 여러 메소드?

<%= link_to "Category", { :controller => "projects", :action => "sortTable", :filter => "Category" }, :remote => true %> 

- 내 routes.rb 파일 :

Docside::Application.routes.draw do 
    resources :projects 
    resources :categories 
    #get "home/index" 
    root :to => "projects#new" 
    match 'project/new',:controller=>"projects",:action=>"create" 
end 

하지만 오류를 받고 있어요 " {: action => "sortTable", : controller => "projects"} "와 일치하는 경로가 없습니다. "match project/new", : controller => "projects", : action => "sortTable" "내 다른 함수가 작동하지 않고 create 함수가 엉망이되었습니다. 대신 내가 무엇을해야합니까? 당신은 단지 주어진 경로 및 방법 조합에 대한 하나 개의 경로를 가질 수

resources :projects do 
    collection do 
    post :sortTable 
    end 
end 

을 그리고이 guide

답변

2

것을보십시오. 같은 경로에 여러 개의 경로를 정의하려고 시도하므로 하나만 작동합니다 (첫 번째 경로). 모든 작업에 대해 고유 한 경로를 사용하는 것이 좋습니다 (기존 경로와의 충돌에주의하십시오).

레일을 고집하면 더 쉽게 생활 할 수 있습니다. '규약 (그리고 다른 누군가가 그것에 대해 작업을 시작하면 코드가 더 읽기 쉽습니다). 예를 들어 resources :projects은 이미 만들기 작업의 경로를 만듭니다. 추가 조치가 너무

resources :projects do 
    collection do 
    get :sort_table 
    end 
end 

이 sort_table 행동을하고 (sort_table_projects_path)에 대한 URL 헬퍼를 설정 (특정 프로젝트에 대해하지 않습니다 즉, 하나) 수집 경로를 설정처럼 추가 할 수 있습니다. 사용할 수있는 대체 구문이 있습니다. 라우팅을 살펴 보시기 바랍니다. guide

+0

고맙습니다! 내 routes.rb의 마지막 행에있는 "작성"작업을 어떻게 추가합니까? – user1436111

+0

'resources : projects'는 이미 ProjectsController로 경로 지정되어'POST' HTTP 메소드를위한'/ projects' URL에 대한 액션을 생성합니다. '레이크 루트 '로 확인하십시오. 기본 RESTful 라우트에 추가 라우트를 추가하려면 응답 또는 구성원 블록에 표시된 것과 같이 콜렉션 블록을 사용하십시오. 다른 옵션에 대해서는 답변에서 가이드를보십시오. 정말 잘 쓰여졌습니다. –

+0

아. 설명 해줘서 고마워. – user1436111

2

보고 :