제품 기능 실장에 작용하는fieldsfor
9068 단어 fields_for초학자RubyRails
현재 프로그래밍 학교에서 메일 사본을 만드는 사이트를 만들고 있다.
나는 A반에 속해 쓰레기 처리 전문가로 일하고 있다.
다른 블로그 전에 기사를 썼는데 이번에 쓸 때 잘 못 쓴 부분이 있어서 Qita로 투고하기로 했다.
이번엔 오늘까지 전시 작품 기능실장 새로 배운 필드입니다.for에 대해 쓰다.
추기
ancestry에 대한 보도 생성
컨디션
Rails 5.2.3
출품 기능을 통해 배운 것
출품 기능은 입력한 값을 데이터베이스에 저장해야 한다.
메르칼리의 출품 화면에 필요한 프로젝트 A반은 다음과 같은 몇 부분으로 나뉜다.
·Items표(상품정보 저장)
상품명·상품의 설명·사이즈·상품의 상태·셀러id(전시된user의 id)·buyerid(구매한 user id)·brandid shipmentid 가격
seller_id、buyer_id링크된 글 참조 정보
· Brands 표 (브랜드 정보 저장)
브랜드 이름
·Shipments표(배송정보 저장)
배송비 부담, 배송 방법, 발송원 지역(prefecture id), 발송 전 일수
• Categories 테이블 (분류 이름 저장)
분류명·ancestry(아래 글에서 설명할 예정)
・Itemscategories 탁자 (중간 탁자)
item_id categoryid
이미지 Active 정보Storage를 사용하여 저장하는 중입니다.
위의 표에 값을 저장하는fieldsfor는 유용하다.
fields_for를 통해 다른 모델에 저장
방금 열거한 표에 값을 저장하기 위해서는 출품 화면을 만드는 보기에서 다른 모델의 값을 저장할 수 있음을 지시해야 한다.
이를 위해 사용된 것은 fields_for
fields_for는 관련 등 링크를 통해 모델을 입력하여 등록하고 업데이트하는 방법입니다.
이 보도가 참고가 됐다.
사용하기 위해서는 모형 컨트롤러를 기술해야 한다.
모델 기술
Item 테이블의 모델 Item입니다.rb를 예로 들어 설명하다.
Item.rb에서fieldsfor를 사용하기 위해 다음과 같은 기술을 했습니다.(app/models/item.rb)
accepts_nested_attributes_for :shipment
accepts_nested_attributes_for :brand
has_many :items_categories
has_many :categories, through: :items_categories
요점은 accepts_nested_attributes_for
가 지정한 곳이다.
이 기술을 통해shipment,brand,itemscategory는 책상과 연결될 수 있습니다.
items_category has매니의 관계이기 때문에 여러 가지 형식으로 쓰는데shipment와 brand는 각각has이다one、belongs_to 관계이기 때문에 단수 형식으로 씁니다.
Controller 기술
Controller도 fieldsfor 사용을 지정해야 합니다.
item을 만드는 new 동작에서 다음과 같다.
(app/controllers/items_controller.rb)
def new
@item = Item.new
@parents = Category.all.order("id ASC").limit(13)
@item.build_shipment
@item.build_brand
end
요점build
.이 기술을 통해 new 동작에서fieldsfor를 기술할 수 있습니다.
has_원 하고 블링스.to는build를 사용할 수 없기 때문에build모델명으로서
또한 플래시 매개변수 내의 모델 이름attributes로 지정해야 합니다.
permit에서create 동작으로 방법을 가져오면 입력한 값을 저장할 수 있습니다.
(app/controllers/items_controller.rb)
def create
@item = Item.new(item_params)
if @item.save!
shipment_id = Shipment.find(@item.id).id #Shipmentテーブルのidを取り出す
item = Item.find(@item.id) #作成したItemのidを取り出す
item.update(shipment_id: shipment_id) #Itemテーブルにshipment_idのカラムを入れる
redirect_to root_path
else
redirect_to new_item_path
end
end
def item_params
params.require(:item).permit(:name, :size, :description, :price, :item_status,
shipment_attributes: [:id, :cost_payer, :method, :days, :prefecture_id],images: [],
brand_attributes: [:id, :name], category_ids: []).merge(seller_id: current_user.id)
end
view의 기술
기술량이 적은 브랜드 모델로 설명하다.
fields_for를 사용하면 다음과 같은 기술이 됩니다.
(app/views/items/new.html.haml)
.form-group.brand--container
= f.fields_for :brand do |brand|
= brand.label "ブランド"
%span.form-require-gray 任意
%div
= brand.text_field :name, placeholder: "例)シャネル", value: "", class: "input-default"
fields_for: brand에서 brand 모델 지정하기,text필드에name열을 지정하면 브랜드 테이블에name의 값을 저장할 수 있습니다.
실제 화면은 이렇다.
여기에 브랜드의name을 입력하면 데이터베이스에 저장할 수 있습니다.
후기
팀 개발 2차 단거리 검사 종료
이번 주 금요일 세 번째 단거리 심사에 앞서 팀은 필요한 모든 프로젝트를 실시하는 것을 목표로 개발 중이다.
6/3~6/9 사이에 전원이 모이는 날은 3일밖에 안 된다.
그럼에도 불구하고 순조롭게 진행되어 나는 좋은 멤버들의 도움을 받았다고 생각한다.
만약 본 보도의 내용에 잘못된 점이 있다면 저에게 알려 주십시오.
잘 부탁드립니다.
Reference
이 문제에 관하여(제품 기능 실장에 작용하는fieldsfor), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mihou/items/2d7504c0bf98d07a95c3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails 5.2.3
출품 기능을 통해 배운 것
출품 기능은 입력한 값을 데이터베이스에 저장해야 한다.
메르칼리의 출품 화면에 필요한 프로젝트 A반은 다음과 같은 몇 부분으로 나뉜다.
·Items표(상품정보 저장)
상품명·상품의 설명·사이즈·상품의 상태·셀러id(전시된user의 id)·buyerid(구매한 user id)·brandid shipmentid 가격
seller_id、buyer_id링크된 글 참조 정보
· Brands 표 (브랜드 정보 저장)
브랜드 이름
·Shipments표(배송정보 저장)
배송비 부담, 배송 방법, 발송원 지역(prefecture id), 발송 전 일수
• Categories 테이블 (분류 이름 저장)
분류명·ancestry(아래 글에서 설명할 예정)
・Itemscategories 탁자 (중간 탁자)
item_id categoryid
이미지 Active 정보Storage를 사용하여 저장하는 중입니다.
위의 표에 값을 저장하는fieldsfor는 유용하다.
fields_for를 통해 다른 모델에 저장
방금 열거한 표에 값을 저장하기 위해서는 출품 화면을 만드는 보기에서 다른 모델의 값을 저장할 수 있음을 지시해야 한다.
이를 위해 사용된 것은 fields_for
fields_for는 관련 등 링크를 통해 모델을 입력하여 등록하고 업데이트하는 방법입니다.
이 보도가 참고가 됐다.
사용하기 위해서는 모형 컨트롤러를 기술해야 한다.
모델 기술
Item 테이블의 모델 Item입니다.rb를 예로 들어 설명하다.
Item.rb에서fieldsfor를 사용하기 위해 다음과 같은 기술을 했습니다.(app/models/item.rb)
accepts_nested_attributes_for :shipment
accepts_nested_attributes_for :brand
has_many :items_categories
has_many :categories, through: :items_categories
요점은 accepts_nested_attributes_for
가 지정한 곳이다.
이 기술을 통해shipment,brand,itemscategory는 책상과 연결될 수 있습니다.
items_category has매니의 관계이기 때문에 여러 가지 형식으로 쓰는데shipment와 brand는 각각has이다one、belongs_to 관계이기 때문에 단수 형식으로 씁니다.
Controller 기술
Controller도 fieldsfor 사용을 지정해야 합니다.
item을 만드는 new 동작에서 다음과 같다.
(app/controllers/items_controller.rb)
def new
@item = Item.new
@parents = Category.all.order("id ASC").limit(13)
@item.build_shipment
@item.build_brand
end
요점build
.이 기술을 통해 new 동작에서fieldsfor를 기술할 수 있습니다.
has_원 하고 블링스.to는build를 사용할 수 없기 때문에build모델명으로서
또한 플래시 매개변수 내의 모델 이름attributes로 지정해야 합니다.
permit에서create 동작으로 방법을 가져오면 입력한 값을 저장할 수 있습니다.
(app/controllers/items_controller.rb)
def create
@item = Item.new(item_params)
if @item.save!
shipment_id = Shipment.find(@item.id).id #Shipmentテーブルのidを取り出す
item = Item.find(@item.id) #作成したItemのidを取り出す
item.update(shipment_id: shipment_id) #Itemテーブルにshipment_idのカラムを入れる
redirect_to root_path
else
redirect_to new_item_path
end
end
def item_params
params.require(:item).permit(:name, :size, :description, :price, :item_status,
shipment_attributes: [:id, :cost_payer, :method, :days, :prefecture_id],images: [],
brand_attributes: [:id, :name], category_ids: []).merge(seller_id: current_user.id)
end
view의 기술
기술량이 적은 브랜드 모델로 설명하다.
fields_for를 사용하면 다음과 같은 기술이 됩니다.
(app/views/items/new.html.haml)
.form-group.brand--container
= f.fields_for :brand do |brand|
= brand.label "ブランド"
%span.form-require-gray 任意
%div
= brand.text_field :name, placeholder: "例)シャネル", value: "", class: "input-default"
fields_for: brand에서 brand 모델 지정하기,text필드에name열을 지정하면 브랜드 테이블에name의 값을 저장할 수 있습니다.
실제 화면은 이렇다.
여기에 브랜드의name을 입력하면 데이터베이스에 저장할 수 있습니다.
후기
팀 개발 2차 단거리 검사 종료
이번 주 금요일 세 번째 단거리 심사에 앞서 팀은 필요한 모든 프로젝트를 실시하는 것을 목표로 개발 중이다.
6/3~6/9 사이에 전원이 모이는 날은 3일밖에 안 된다.
그럼에도 불구하고 순조롭게 진행되어 나는 좋은 멤버들의 도움을 받았다고 생각한다.
만약 본 보도의 내용에 잘못된 점이 있다면 저에게 알려 주십시오.
잘 부탁드립니다.
Reference
이 문제에 관하여(제품 기능 실장에 작용하는fieldsfor), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mihou/items/2d7504c0bf98d07a95c3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
방금 열거한 표에 값을 저장하기 위해서는 출품 화면을 만드는 보기에서 다른 모델의 값을 저장할 수 있음을 지시해야 한다.
이를 위해 사용된 것은
fields_for
fields_for는 관련 등 링크를 통해 모델을 입력하여 등록하고 업데이트하는 방법입니다.이 보도가 참고가 됐다.
사용하기 위해서는 모형 컨트롤러를 기술해야 한다.
모델 기술
Item 테이블의 모델 Item입니다.rb를 예로 들어 설명하다.
Item.rb에서fieldsfor를 사용하기 위해 다음과 같은 기술을 했습니다.
(app/models/item.rb)
accepts_nested_attributes_for :shipment
accepts_nested_attributes_for :brand
has_many :items_categories
has_many :categories, through: :items_categories
요점은 accepts_nested_attributes_for
가 지정한 곳이다.이 기술을 통해shipment,brand,itemscategory는 책상과 연결될 수 있습니다.
items_category has매니의 관계이기 때문에 여러 가지 형식으로 쓰는데shipment와 brand는 각각has이다one、belongs_to 관계이기 때문에 단수 형식으로 씁니다.
Controller 기술
Controller도 fieldsfor 사용을 지정해야 합니다.
item을 만드는 new 동작에서 다음과 같다.
(app/controllers/items_controller.rb)
def new
@item = Item.new
@parents = Category.all.order("id ASC").limit(13)
@item.build_shipment
@item.build_brand
end
요점build
.이 기술을 통해 new 동작에서fieldsfor를 기술할 수 있습니다.has_원 하고 블링스.to는build를 사용할 수 없기 때문에build모델명으로서
또한 플래시 매개변수 내의 모델 이름attributes로 지정해야 합니다.
permit에서create 동작으로 방법을 가져오면 입력한 값을 저장할 수 있습니다.
(app/controllers/items_controller.rb)
def create
@item = Item.new(item_params)
if @item.save!
shipment_id = Shipment.find(@item.id).id #Shipmentテーブルのidを取り出す
item = Item.find(@item.id) #作成したItemのidを取り出す
item.update(shipment_id: shipment_id) #Itemテーブルにshipment_idのカラムを入れる
redirect_to root_path
else
redirect_to new_item_path
end
end
def item_params
params.require(:item).permit(:name, :size, :description, :price, :item_status,
shipment_attributes: [:id, :cost_payer, :method, :days, :prefecture_id],images: [],
brand_attributes: [:id, :name], category_ids: []).merge(seller_id: current_user.id)
end
view의 기술
기술량이 적은 브랜드 모델로 설명하다.
fields_for를 사용하면 다음과 같은 기술이 됩니다.
(app/views/items/new.html.haml)
.form-group.brand--container
= f.fields_for :brand do |brand|
= brand.label "ブランド"
%span.form-require-gray 任意
%div
= brand.text_field :name, placeholder: "例)シャネル", value: "", class: "input-default"
fields_for: brand에서 brand 모델 지정하기,text필드에name열을 지정하면 브랜드 테이블에name의 값을 저장할 수 있습니다.실제 화면은 이렇다.
여기에 브랜드의name을 입력하면 데이터베이스에 저장할 수 있습니다.
후기
팀 개발 2차 단거리 검사 종료
이번 주 금요일 세 번째 단거리 심사에 앞서 팀은 필요한 모든 프로젝트를 실시하는 것을 목표로 개발 중이다.
6/3~6/9 사이에 전원이 모이는 날은 3일밖에 안 된다.
그럼에도 불구하고 순조롭게 진행되어 나는 좋은 멤버들의 도움을 받았다고 생각한다.
만약 본 보도의 내용에 잘못된 점이 있다면 저에게 알려 주십시오.
잘 부탁드립니다.
Reference
이 문제에 관하여(제품 기능 실장에 작용하는fieldsfor), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mihou/items/2d7504c0bf98d07a95c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)