2010-12-08 4 views
4

지금 이틀 동안이 문제에 봉착했습니다.레일 3 단일 형식으로 다중 레코드 편집

Railscasts Episode # 198에서 약간의 성공을 거두었지만 그 중 하나는 Rails 2에 대한 것입니다. Rails 3에서는 Episode # 198에서 제공되는 코드가 작동하지 않도록 약간의 변경이있었습니다.

원본 코드 (라이언 @ Railscasts에 의해 제공) :

<% form_tag update_individual_products_path, :method => :put do %> 
    <% for product in @products %> 
    <% fields_for "products[]", product do |f| %> 
     <h2><%=h product.name %></h2> 
     <%= render "fields", :f => f %> 
    <% end %> 
    <% end %> 
    <p><%= submit_tag "Submit" %></p> 
<% end %> 

수정 코드 (단순히 form_for하는 fields_for 변경) :

<% form_tag update_individual_products_path, :method => :put do %> 
    <% for product in @products %> 
    <% form_for "products[]", product do |f| %> 
     <h2><%=h product.name %></h2> 
     <%= render "fields", :f => f %> 
    <% end %> 
    <% end %> 
    <p><%= submit_tag "Submit" %></p> 
<% end %> 

문제는 edit_individual.html.erb 내에있는

새 코드에서 각 레코드는 하나의 단일 양식 (모두 내가 원하는 것) 안에 자신의 양식으로 배치됩니다.

제 질문은 Railscasts 에피소드 # 198에서 제공하는 코드를 Rails 3에서 사용하려면 어떻게해야합니까? http://railscasts.com/episodes/198-edit-multiple-individually

당신을 감사 c.allen.rosario

+2

다른 'form_for' 안에'form_for'를 사용할 수 없습니다. 다른'

' 태그 안에 '' 태그가 있기 때문입니다.** fields_for를 사용해야합니다. Rails 3에서 코드를 실행할 때의 오류는 무엇입니까? – Zabba

+0

오류가 표시되지 않습니다. 제출 버튼이있는 빈 페이지가 나타납니다. –

답변

15

나는 해결책을 발견 : 여기

내가 언급 한 Railscast에 대한 링크입니다.

<% fields_for "products[]", product do |f| %> 

과로 변경 : : 그냥 라이언 @ Railscasts에서 제공하는 코드에서 다음 줄을 수정해야 <%<%=에 수정 된 것으로,

<%= fields_for "products[]", product do |f| %> 

알 수 있습니다.

최종 솔루션 : 누군가가 나에게이 솔루션을 설명 할 수있는 경우

<% form_tag update_individual_products_path :method => :put do %> 
    <% for product in @products %> 
    <%= fields_for "products[]", product do |f| %> 
     <h2><%= h product.name %></h2> 
    <% end %> 
    <% end %> 
    <p><%= submit_tag "Submit" %></p> 
<% end %> 

가 궁금했다. 내가 이해하는 바로는 fields_for 앞에 <% 만 있으면됩니다.

c.allen.rosario

+2

예, Rails 3에서는'='가 필요합니다. 이전 Rails 버전에서는 필요하지 않았습니다. 'form_tag'에 사용할 필요가 없습니까? – Zabba

+0

=이 form_tag에 필요하지 않음 –

+0

쉼표가 없다고 생각합니다. 최종 해결책은 다음과 같이 시작해야합니다 :'<% form_tag update_individual_products_path, : method => : put do %>' – Spone

4

이 <퍼센트 양식을 이용 하였다 ... 등이 form_for, 때 form_tag 혼란 때문에 <퍼센트 = fields_for에 fields_for <%에서 레일 (3)의 변화는 ... % >그들은 심지어 그들은 html 코드를 출력했다. 레일즈 3에서는 html 코드를 출력하기 때문에 < % =를 사용합니다.

첫 번째 라인이되지 않습니다주의하시기 바랍니다 :

<% form_tag update_individual_products_path, :method => :put do %> 

모든 형태의 태그에 대한

<%= form_tag update_individual_products_path, :method => :put do %> 

동일해야합니다.

관련 문제