Dalam tutorial ini kita akan mencoba untuk membuat nested_form dari dua model yang saling berelasi dalam sebuah aplikasi rails dengan mengunakan gem 'nested_form'.
INSTALASI
Edit gemfile
Langkah selanjutnya adalah mengjalankan perintah
Lalu kita masukan di application.js
PENGUNAAN
Jika kita mempunyai model Order yang mempunyai relasi has_many :line_items, untuk dapat menggunakan gem ini kita harus memasukan accepts_nested_attributes_for :line_items di model Order kita, dan jika menginginkan nested object agar dapat dihapus maka kita dapat menambahkan allow_destroy: true setelahnya.
Berikut adalah ilustrasinya :
order.rb
line_item.rb
Selanjutnya adalah kita dapat mengunakan nested_form_for untuk dapat menggunakan nesting ini.
Maka dengan demikian kita dapat menggunakan link_to_add dan link_to_remove didalam builder tersebut yang berguna untuk menambahkan dan menghapus nested record, contoh.
Selamat mencoba dan Happy Coding
INSTALASI
Edit gemfile
gem 'nested_form'
Langkah selanjutnya adalah mengjalankan perintah
$ bundle install
Lalu kita masukan di application.js
//= require jquery_nested_form
PENGUNAAN
Jika kita mempunyai model Order yang mempunyai relasi has_many :line_items, untuk dapat menggunakan gem ini kita harus memasukan accepts_nested_attributes_for :line_items di model Order kita, dan jika menginginkan nested object agar dapat dihapus maka kita dapat menambahkan allow_destroy: true setelahnya.
Berikut adalah ilustrasinya :
order.rb
class Order < ActiveRecord::Base
has_many :line_items, :dependent => :destroy
accepts_nested_attributes_for :line_items, allow_destroy: true
end
has_many :line_items, :dependent => :destroy
accepts_nested_attributes_for :line_items, allow_destroy: true
end
line_item.rb
class LineItem < ActiveRecord::Base
belongs_to :order
end
belongs_to :order
end
Selanjutnya adalah kita dapat mengunakan nested_form_for untuk dapat menggunakan nesting ini.
<%= nested_form_for @order do |f| %>
Maka dengan demikian kita dapat menggunakan link_to_add dan link_to_remove didalam builder tersebut yang berguna untuk menambahkan dan menghapus nested record, contoh.
<%= f.fields_for :line_items do |li| %>
<%= li.text_field :item_name %>
<%= li.text_field :quantity %>
<%= li.text_field :price %>
<%= li.link_to_remove "Remove item" %>
<% end %>
<%= f.link_to_add "Add item", :line_items %>
<%= li.text_field :item_name %>
<%= li.text_field :quantity %>
<%= li.text_field :price %>
<%= li.link_to_remove "Remove item" %>
<% end %>
<%= f.link_to_add "Add item", :line_items %>
Satu hal yang tidak boleh kita lupakan untuk Rails 4 adalah penggunaan strong_params, dan kita harus memasukan attributes line_items ke bagian ini di orders_controller.rb agar nested record dari line_items dapat tersimpan di database.
def order_params
params.require(:order).permit(:order_number, :order_date, :line_items_attributes => [:id, :item_name, :price, :_destroy])
end
params.require(:order).permit(:order_number, :order_date, :line_items_attributes => [:id, :item_name, :price, :_destroy])
end
Selamat mencoba dan Happy Coding
Tidak ada komentar:
Posting Komentar