2011-10-06 8 views
1

그래서 업데이트 작업에 params [: id] 값이없는 문제가 있습니다.레일 3에서 어떻게 ID가 업데이트 문에 전달됩니까

"ID가없는 메뉴를 찾을 수 없습니다"- 양식 요소에 id = "edit_menu_1"이 있습니다.

비슷한 항목에 대한 스캐 폴드를 실행하면 업데이트 문 (POST 문에서 id 값이없는 것)에 의해 선택되는 것처럼 보입니다. 이 값은 내가 찾고/디버깅해야하는 올바른 값입니까? 표준 레일 디버그 기술이 있습니까, id 값에 대해 (올바른 id의 숨겨진 양식 필드와 같은) 말할 수 있습니까?

들으 편집 번호 development.log 파일 비계에서 1 (id 값이 존재)이

:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"xr82q8+YSj7z1WorVedqUKzEYroycDslMgRqgZf5crQ=", "menu"=>{"name"=>"Bar Menu - some thigs"}, "commit"=>"Update Menu"} 

내 폼 코드

Parameters: {"utf8"=>"✓", "authenticity_token"=>"HfMoJHPC7oFFYDcmeHh4tVzlRtpreQTYT75L7TDZ3Qs=", "menu"=>{"content"=>"here is my menu - more things for you"}, "commit"=>"Update Menu", "id"=>"1"} 

내 앱 (NO id 값)입니다 :

<%= form_for(@menu , :url => menus_save2_path) do |f| %> 
    <div><%=f.text_field :name %></div> 
  1. 어떻게 id 값을 강요합니까?
  2. 의미가 있지만 스캐 폴딩 된 코드를 보면 id 값에 숨겨진 매개 변수가 없습니다. 이 작업이 자동으로 수행되고 있습니까?
+3

일부 코드보기 ... – lucapette

+0

대신 문자열을 포함하기 위해 일반적인 정수'id' 필드를 재정의 했습니까? 'id = "edit_menu_1"'은 무엇입니까? - html 요소의 ID이고 데이터베이스 테이블의 레코드 ID가 아닌 것 같습니다. – Zabba

+0

맞습니다. – timpone

답변

1

params은 항상 log/development.log으로 표시되므로 요청이 처리 될 때 어떤 매개 변수가 표시되는지 확인해야합니다. 일반적으로 :id 매개 변수는 URL 형식으로 제공되며 HTML 형식이 아니며 라우팅 시스템에서 생성됩니다. 매개 변수가 form_tag 또는 form_for 호출의 타겟 URL에 포함하지 않았기 때문에 매개 변수가 없을 수 있습니다.

+0

개발 로그 및 form_for가 추가 된 게시물의 'form' 요소의 ID입니다. 모델을 전달할 때 올바르게 수행하고 있다고 생각합니다. thx – timpone

+0

'rake routes'의'menus_save2_path' 라우팅은 무엇입니까? 'menus_save2_path (@menu)'와 같은 인수가 필요할 수도 있습니다. – tadman

+1

네가 맞다고 생각해 .- 난 그냥 레일스의 기본 REST 접근법에서이 작업을 다시 시작했고, 일하고있다. 이것에 대한 설명은 솔직히 말해서, 너무 길다. – timpone

관련 문제