2015-02-05 3 views
2

내가 루비 온 레일즈 응용 프로그램에서 일하고 있어요 (루비 2 - 레일 4-3 부트 스트랩은)편집 양식을 만드는 가장 좋은 방법은 무엇입니까?

내가 가입과 같은 양식을 작성하고 등록 할 simple_form 보석을 사용했다,하지만 당신은 양식을 만들려면 어떻게해야합니까 데이터베이스에서 개체를로드하고 사용자가 세부 정보를 편집 할 수있게합니까?

우리가 데이터베이스에서 제품 테이블을했고 나는이

등 제품의 설명, 가격, 편집하는 사용자가 양식에 해당 제품의 상세 정보를로드하는 양식을 작성하고 수 있도록하고 싶었다 말 주변을 둘러 보았지만 아직 명확하지 않습니다.

감사합니다.

+0

단순히 'form_for' 또는'simple_form_for' 헬퍼를 사용하십시오. 다음은 'form_for' 선언과 몇 가지 예입니다. http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_for –

+0

@MarekLipka 저는 form_for를 사용하여 가이드를보고 있습니다. 당신은 행운이없이 가로 질러 보냈습니다. 폼을 복사하는 것은 매우 간단하지만 관련 컨트롤러에서 선언해야하는 것이 있습니까? 아직 운이 없다! 귀하의 의견을 보내 주셔서 감사합니다. – RubyMax

답변

4

먼저보기에서 제품을 매개 변수로 보내는 편집 작업으로 연결해야합니다.이 작업은 일반적으로 색인 (app/views/products/index.html.erb)에 있습니다. 그것은 다음과 비슷한 모습이 될 것입니다

이제
def edit 
end 

하여 편집 :

<%= link_to 'Edit', edit_product_path(product) %> 

그런 다음 당신이 당신의 제품 컨트롤러 (응용 프로그램/컨트롤러/products_controller.rb을) 편집 작업이 있는지 확인해야합니다.

<h1>Editing product</h1> 

<%= render 'form' %> 

<%= link_to 'Show', @product %> | 
<%= link_to 'Back', product_path %> 

그리고 당신이이 응용 프로그램/뷰/_form.html.erb에 위치해야 렌더링하는 마지막 형태 : html.erb (응용 프로그램/뷰/제품/edit.html.erb)이 같이 보일 것이다 해야한다. OOK이 같은 :

<%= form_for(@product) do |f| %> 
    <% if @product.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2> 

     <ul> 
     <% @product.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :price %><br> 
    <%= f.text_field :price %> 
    </div> 
    <div class="field"> 
    <%= f.label :description %><br> 
    <%= f.text_field :descriptions %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

팁 : 레일 비계 명령을 생성 당신은 비계를 생성 할 때 자동으로 편집, 삭제, 쇼 모델에 대한 새로운 행동과 내가 위에서 언급 한 모든 뷰와 클래스를 만듭니다.

rails generate Scaffold Product name:string description:text price:decimal 

희망 하시겠습니까?

+0

Andres, 의견을 보내 주셔서 감사합니다.하지만 슬픈 듯이 여전히 문제가 있습니다. 앱이 다른 사람에 의해 설정되었으므로 내가 가진 것과 함께 작업하고 있습니다. 어떤 이유로 든 편집 예제의 모든 오류 검사가 제대로 작동하지 않습니다. 또한 작업 버튼의 경로를 edit_product_path로 변경해야했지만 페이지는 작동하지만 필드는 관련 객체 (제품)에 대한 데이터로 생성되지 않았습니다. 어떤 아이디어? – RubyMax

+0

또한 위의 예제에서 제공 한 것보다 더 많은 코드를 추가해야합니까, 아니면 속성 컨트롤러에서 편집 작업 만 수행해야합니까? – RubyMax

+0

편집 기능 내에 코드를 추가 할 필요가 없습니다. 제품을 매개 변수로 편집 페이지에 전달하고 있습니까? <% = link_to '편집'을 사용하는 경우 edit_product_path (product) %> '제품'이 수정하려는 객체의 인스턴스인지 확인하십시오. –

관련 문제