form_g.formfor의 차이

9758 단어 Rails

form_for


"새 모델 실례에 값을 추가하고 저장하기" 를 원할 때formfor


form_for는 특정한 '모형' 을 편집하고 추가하는 창을 만드는 조수입니다.
특정 테이블에서만 레코드(모델 클래스 인스턴스)를 생성하고 업데이트에 사용합니다.
이런 특성이 있기 때문에formg.formfor는 다음과 같이 사용할 수 있습니다.
■form_for: 임의의 모형을 바탕으로 하는 form(투고 형식 등) 제작에 사용
- 모델에서 테이블에 입력한 정보를 테이블에 추가/편집
■form_g: 모델 기반이 아닌form을 만들 때 사용(창 검색 등)
→ 검색할 때 모델에 인스턴스를 편집하거나 추가할 필요가 없음
(사용 방법)
form_for.rb
<%= form_for(モデルクラスのインスタンス) do |f| %><% end %>
form_for는 매개 변수의 실례입니다. 정보가 없으면 자동create 동작을 하고, 정보가 있으면 업데이트에 자동으로 분배합니다.form_tag처럼 경로를 지정할 필요가 없기 때문에 가볍다.
모델 클래스의 실례는 컨트롤러에 미리 정의됩니다!

form_for에서 사용하는 방법은 f.} 탭 이름: 열 이름으로 지정


[form for의 방법 예시]
메서드
용도
f.label
태그 표시
f.text_field
text의 input 탭 보이기
f.date_select
select 탭으로 모델 설정을 선택한 필드를 표시합니다
f.check_box
checkbox의 input 탭 보이기
f.number_field
number의 input 탭 보이기
f.submit
submit의 input 태그 보이기
참조 URL: http://railsdoc.com/form
sample.rb
    <%= form_for [@product, @review] do |f| %>
          <div style="margin: 8px 0">
            <%= f.label :nickname, style: { 'margin-right' => 8 } %>
            <%= f.text_field :nickname, placeholder: 'nickname', value: '' %>
          </div>
          <div style="margin: 8px 0">
            <%= f.label :評価, style: { 'margin-right' => 8 } %>
            <%= f.number_field :rate, placeholder: '評価', value: 1, max: 10, min: 1, html: { class: "search__query", style: 'text-align: right;' } %>
          </div>
          <div style="margin: 8px 0">
            <%= f.text_area :review, placeholder: 'レビューを書いてね!', style: 'width: 100%;height: 300px;' %>
          </div>
          <div class="row">
            <div class="col10 push1">
              <%= button_tag type: "submit", class: "btn btn--block" do %>
              投稿する<i class="icon-arrow-right"></i>
              <% end %>
            </div>
          </div>
      <% end %>
행의 formfor의 매개 변수는 배열된 것입니다.진열의 첫 번째 요소 실례의 id 경로:product-id에 들어갑니다.이번 패스 플러그는 두 단계로 나뉜다.for의 매개 변수 실례는 두 개입니다.

form_for 매개 변수 정보


resources를 두 번 끼워 넣을 때
routes.rb
resources :users do
  resources :products do
    resources :reviews
  end
end
controller.rb
def new
  @user = User.find(4)
  @product = Product.find(2)
  @review = Review.new
end
new.html.erb
<%= form_for ( [@user, @product, @review ] ) do |f| %>
  (中略)
<% end %>
送られるリクエスト
↓↓
# HTTPメソッド
POST
# パス
/users/4/product/2/reviews

form_g.formfor에 매개 변수를 저장하는 방법의 차이


binding.pry로 params를 보면 알 수 있어요,formfor는params의 산열에 다른 산열을 포함하고 산열의 이중 구조가 존재하는 상태입니다.

종착역에서 본 게 이런 느낌이에요.
↓↓↓↓
>>>new.html.erb
<%= form_for(@book) do |f| %>
  <%= f.text_field :name %>
  <%= f.text_area :detail %>
<% end %>

>>>ターミナル
params
# { book: { name: "入力された名前", detail: "入力された詳細" } }
※ 상기 예시 중 북은 기종명
따라서 우선 이 산열을 분리해야 한다.거기서 사용하기 때문에 "Require"방법이에요.이 파라미터를 이용하면 플래시 파라미터를 설정할 수 있습니다.
『require 방법』
params.require.perrmit (: 열 이름)
→params에서 모델 이름 (북) 의 산열 ({name: "입력한 이름",detail: "입력한 상세한 정보"}) 을 호출하고 있습니다.
【참조 URL】
https://qiita.com/tsubasakat/items/4ececaba4efc928c0792
https://www.sejuku.net/blog/13163

좋은 웹페이지 즐겨찾기