Arsip

Arsip untuk November 3, 2009

Delete semua record dengan checkbox

November 3, 2009 Andry Sucipto Komentar dimatikan

Pada View :

<% @collection.each do |c| %>
<%= check_box_tag ‘myrow[id][]‘, c.id, false %>
<% end %>

Pada Controller :

def delete_all
@a = Model.find(params[:myrow][:id])
@a.each { |t| t.destroy }
end

Langkah Tarakhir pada Routes :

map.resources :controller, :collection => {:delete_all => :get}

Atau cara yang lain seperti di bawah ini :

Pada View :

<% form_for :items, @items, :url => { :action => 'destroy' } do %>
 <% for item in @items %>
 <%= check_box_tag 'item_ids[]', item.id, false %> <%= item.name %>
 <% end %>
<%= submit_tag 'Delete', :name =>'commit', :value => 'Delete',
:confirm => 'Are you sure?' %>
<% end %>

Pada Controller :

def index
 @items = Item.find(:all)

 respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :x ml => @items }
 end
end

def destroy
 i = 0
 arr_item = Array.new
 @items = Item.find(params[:item_ids])
 @items.each do |item|
  item.destroy
  arr_item[i] = item.name
  i += 1
 end
 @item_name = arr_item*', '  

 redirect_to(items_url)
 flash[:notice] = @item_name + ' was successfully deleted.'
end

Semua cara diatas dapat di gunakan, silahkan pilih salah satu yang termudah bagi anda

Categories: Ruby On Rails

Membuat Post dengan Banyak Category dengan Checkboxs pada Rails

November 3, 2009 Andry Sucipto Komentar dimatikan

posting ini kan amenjelaskan gimana seorang programer pemula untuk membuat sebuah post yang diikuti oleh banyak category dengan menggunakan checkbox, langkah langkahnya cukup sederhana

1. kita membuat scaffold Project dan scaffold User atau form form lain

2. pada Model keduanya kita tambahkan relasi :

pada User : has_and_belongs_to_many :projects

Pada Project : has_and_belongs_to_many :users

3, pada Form (NEW dengan EDIT) tambahkan check box nya :

<% for user in User.find(:all) %>
<div>
<%= check_box_tag “project[user_ids][]“, user.id, @project.users.include?(user) %>
<%= user.login %>
</div>
<% end %>

4. buat Tabel projects_users dengan field : project_id dan user_id

class CreateProjectsUsers < ActiveRecord::Migration
def self.up
create_table :projects_users, :id => false, :force => true do |t|
t.integer :project_id
t.integer :user_id
t.timestamps
end
end

def self.down
drop_table :projects_users
end
end

5, pada def update project controller kita tambahkan

params[:project][:user_ids] ||= []

langkah terakhir tinggal rake db:migrate dan jalankan servernya