2010-04-23 3 views
17

link_to에서 생성 작업을 올바르게 호출하려면 어떻게해야합니까? REST (map.resources : recipes)를 사용하고 있습니다. 여기에 생성 작업이있다 : 예를 들어Ruby on Rails : create action을 호출하기 위해 "link_to"를 사용할 수 있습니까?

def create 
    recipe = Recipe.create(:name => "French fries") 
    redirect_to recipe 
end 

, 나는 이런 식으로 뭔가가 작동하지 않을 수 있습니다 생각 :

<%= link_to "Create a default recipe", recipe_path, :method => :post %> 

잘 모르겠어요 그게 할 수있는 권장 (또는 올바른) 방법이 있다면. 어떤 생각?

답변

28

recipe_pathrecipes_path으로 바꾸면 작동합니다. 활동 작성에 대한 URL 헬퍼 ("recipes_path은"), 컨트롤러 이름에서 구성되어있는 단서이다

recipes GET /recipes(.:format) {:controller=>"recipes", :action=>"index"} 
     POST /recipes(.:format) {:controller=>"recipes", :action=>"create"} 

: 당신이 rake routes의 출력을 보면

, 당신은 같은 것을 볼 수 끝 부분에 _path이 붙어 있고 :method => :post을 사용합니다. :method => :get (기본값)을 사용하는 동일한 경로는 index 동작으로 매핑됩니다.

레일즈가 실제로 POST를 수행 할 양식을 생성하는 on_click 처리기를 추가하기 때문에 Javascript가 비활성화되어 있으면이 기능이 작동하지 않는다는 것을 기억하십시오. :confirm 옵션을 사용하는 링크 삭제에도 동일하게 적용됩니다.

+0

zetetic 좋은 설명에 감사드립니다! 정말 고맙습니다! :) – sjsc