2010-06-28 4 views
1

나는 나의 routes.db 파일에이 라인을 가지고 :Ruby on Rails에서 내 컨트롤러의 작성 기능에 어떻게 링크합니까?

map.resources :things 

나는 새로운 일을 만들 수있는 링크를 만들려고 해요. 지금까지 나는

<%= link_to "add thing", things_path (:thingName => key)%> 

있어하지만이 오류 메시지가 받고 있어요 : 그것은 만드는 방법 대신 인덱스 방법으로 연결되도록 내가 LINK_TO 라인을 어떻게

Unknown action 
No action responded to index. Actions: create and new 

를? 읽어 주셔서 감사합니다.

답변

1

새 작업 또는 만들기 작업에 연결 하시겠습니까? 새 작업은 다음과 같습니다. < % = link_to "add thing", new_thing_path %> 새 개체에 삽입 할 데이터가 없으므로 만들기 동작이 여기에 적합하지 않습니까? 내가 뭔가를 놓치지 않는 한 ...

+0

내가하는 일이 맞는지 확실하지 않습니다. 나는 (: thingName => key)를 수행함으로써 데이터를 주입하고있다. 이게 옳은 거니? 당신의 도움을 주셔서 감사합니다. – ben

+0

아! 음, 그렇다면 제출하려는 데이터가 포함 된 숨겨진 필드로 구성된 양식을 사용하는 것이 더 좋을 것입니다. 그렇지 않으면 인증 토큰과 기타 모든 것을 첨부하는 방법을 찾아야합니다. 어느 것도 불가능합니다. 그러나 그럴 가치가 없을 수도 있습니다. – jasonpgignac

+0

숨겨진 양식의 메 커닉은 아래의 조쉬의 게시물에 있습니다. 한 페이지에 100 개의 양식을 처리하는 것은 분명히 불쾌한 일이 될 것입니다. 그렇지만 100 개의 매우 복잡한 링크가 있습니다. btw, link_to를 사용하여 양식을 제출하면 link_to "thing 추가", things_path (* 여기에 매개 변수 삽입 *), : method => : 게시물 하지만, 다시 그 시점에서 신뢰성 토큰을 다루는 지 확인하십시오. 그렇지 않으면 오류가 발생합니다. – jasonpgignac

1

당신은 아마 그런 링크를 통해 리소스를 만들고 싶지 않습니다. 링크는 HTTP GET이며 캐시 될 수 있으며 검색 엔진이 해당 링크를 따라 가며 데이터베이스 레코드가 잘못 작성됩니다. 리소스를 만들려면 HTTP POST 요청 만 사용해야합니다. 그렇게하려면 form이 필요합니다. 전달할 데이터를 이미 알고있는 경우 을 사용하여 추가 데이터를 전달할 수 있습니다.

<% form_for Thing.new(:thing_name => key) do |f| %> 
    <%= f.hidden_field :thing_name %> 
    <%= f.submit %> 
<% end %> 
+0

이것은 좋은 생각처럼 들리지만 다른 알고리즘의 결과에 따라 실제로 이러한 저장 링크를 동적으로 생성하기 때문에 문제가있을 수 있습니다. 잠재적으로 수백 가지 형태가있을 수 있습니다. 문제가 있습니까? – ben

+0

Javascript 프레임 워크를 사용하는 경우 javascript에서 동등한 http 게시물을 수행 할 수 있습니다. – joshnuss

관련 문제