Arsip

Archive for the ‘Ruby On Rails’ Category

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}

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

Membuat No Urut dengan rails menggunakan each

Oktober 28, 2009 Andry Sucipto Komentar dimatikan

pada each kita tambah _with_index menjadi seperti ini :

<% @messages.each_with_index do |message, index| %>

<%=h index + 1 %>

<%  end %>

Categories: Ruby On Rails

Membuat Pesan Error waktu Register pada Rails

Oktober 28, 2009 Andry Sucipto Komentar dimatikan

Pada View

<li class=<%= validate_li(“user”, “login”) %>>
<p><label for=”login”>Login</label><br/>
<%= f.text_field :login %></p>
</li>
<li class=<%= validate_li(“user”, “email”) %>>
<p><label for=”email”>Email</label><br/>
<%= f.text_field :email %></p>
</li>
<li class=<%= validate_li(“user”, “email”) %>>
<p><label for=”password”>Password</label><br/>
<%= f.password_field :password %></p>
</li>
<li class=<%= validate_li(“user”, “password_confirmation”) %>>
<p><label for=”password_confirmation”>Confirm Password</label><br/>
<%= f.password_field :password_confirmation %></p>
</li>
<li class=<%= validate_li(“user”, “user_type_id”) %>>
<p><label for=”user_type”>User Type</label><br/>
<%= f.select :user_type_id, UserType.find(:all).collect {|p| [ p.name, p.id ] }, {:prompt => “- Please Select -”} %>
</li>

Pada Helper Aplication

def validate_li(object, field)
(error_message_on object.to_sym, field) == “” ? “” : “error”
end
def error_message(object)
ret = %{
<li id=”errorLi”>
<h3 id=”errorMsgLbl”>There was a problem with your signup.</h3>
<p id=”errorMsg”>
Errors have been <strong>highlighted</strong> below.
</p>
</li>
}
object && !object.errors.empty? ? ret : “”
end

Langkah Terakhir mengganti error message :

<%= error_messages_for :user %>

menjadi :

<%= error_message(@user)  %>

Membaca File text dengan Rails

Oktober 15, 2009 Andry Sucipto Komentar dimatikan

<% File.open(“#{RAILS_ROOT}/public”+”#{@avatar.public_filename}”).each() do |line| %>
<% stringArray = line %>
<%= stringArray %><br/>
<% end %>

Categories: Ruby On Rails

Membuat UserProfile pada Rails

September 23, 2009 Andry Sucipto Komentar dimatikan

pada Model :

User :

has_one    :user_profile

UserProfile:

belongs_to :user

Pada Migration :

class CreateUserProfiles < ActiveRecord::Migration
def self.up
create_table :user_profiles do |t|
t.integer :user_id
t.string  :name
t.string  :city
t.string  :state
t.timestamps
end
end

def self.down
drop_table :user_profiles
end
end

sedangkan pada controller :

class ProfileController < ApplicationController
before_filter :prepare_profile

def index
@user_profile = @user.user_profile
end

def update_profile
if @user.user_profile
@user_profile = UserProfile.find(@user.user_profile.id)
if @user_profile.update_attributes(params[:user_profile])
flash[:notice] = ‘Job was successfully updated.’
redirect_to :action =>’index’, :id => @user_profile.user_id
else
render :action => ‘index’
end
else
@user_profile = UserProfile.new(params[:user_profile])
@user_profile.user_id = current_user.id
if @user_profile.save
flash[:notice] = ‘Job was successfully created.’
redirect_to :action =>’index’
else
render :action => ‘index’
end
end
end

private

def prepare_profile
@user = User.find(current_user.id)
end

end

Categories: Ruby On Rails

Membuat Archive pada Rails

September 8, 2009 Andry Sucipto Komentar dimatikan

dengan menggunakan sebuah plugin kita mampu membangun sebuah archive yang biasanya kita temukan pada blog atau yang di sebut arsip sebiah artikel

nama plugin tersebut adalah acts_as_archivable, adpun taca pengunaan sangat mudah yaitu :

install pluginnya :

http://github.com/joshuaclayton/acts_as_archivable/tree/master

lalu setelah kita install pada model kita berikan :

acts_as_archivable :o rder => ‘DESC’

lalu setelah itu kita beralih ke controler dengan query dan def tersendiri kita berikan kode berikut:

def archive_blog
@blog = Blog.by_date :month => 8, :year => 2009
end

bisa di ganti dengan customes sebagai berikut :

Blog.by_date :year => 2007
Blog.by_date Date.today
Blog.by_date ‘5/1/2007′

Blog.oldest
Blog.newest

Blog.recent 2.weeks
Blog.recent 3.months
Blog.recent (3.months – 1.week)

Blog.between ‘5/10/2007′, Date.today

Membuat Tag pada Rails

September 8, 2009 Andry Sucipto Komentar dimatikan

untuk membuat tag pada rails kita cukup memerlukan satu plugin saja yang bernama acts_as_taggable_on_steroids adapun tatacara penggunaan sebagai berikut :

yang pertama install pluginnya dengan perintah :

script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

seteh kita install buatlah migrations nya dengan perintah :

ruby script/generatr migrations add_tag_support

lalu pada migrationsnya kita tuliskan :

class AddTagSupport < ActiveRecord::Migration
def self.up
#Table for your Tags
create_table :tags do |t|
t.column :name, :string
end

create_table :taggings do |t|
t.column :tag_id, :integer
#id of tagged object
t.column :taggable_id, :integer
#type of object tagged
t.column :taggable_type, :string
end

# Index your tags/taggings
add_index :tags, :name
add_index :taggings, [:tag_id, :taggable_id, :taggable_type]
end

def self.down
drop_table :taggings
drop_table :tags
end
end

lalu kita migrate dengan perintah:

rake db:migrate

langkah selanjutnya pada model yang akan kita beri tag, misalnya model blog,  maka pada model blog kita tambahkan

acts_as_taggable

lalu pada view/blogs file new dengan edit kita tambah :

untuk New :

<p>
<label for=”tag_name”>Add your tags <small>(separated by comma)</small></label><br/>
<%= text_field ‘tag’,'name’ %><br/>
</p>

Untuk Edit :

<p>
<label for=”tag_name”>Add your tags <small>(separated by comma)</small></label><br/>
<%= text_field ‘blog’,'tag_list’ %><br/>
</p>

lalu pada blogs_controller

def edit
blog_id = Blog.find(:all, :conditions => ["id = ? ", params[:id]]).collect {|a| a.id }
if edit_privileges?(blog_id)
@blog = Blog.find(params[:id])
else
redirect_to :action => ‘index’
end
end

# POST /blogs
# POST /blogs.xml
def create
@blog = Blog.new(params[:blog])
@blog.save
taggable_id =  @blog.id
if session[:tag_name]
collect_tag(session[:tag_name])
else
collect_tag(params[:tag][:name])
end
@tags.each do |tag|
tag_found = Tag.find_by_name(tag)
tag_found = Tag.create(:name => tag) if !tag_found
save_tagging(tag_found.id, taggable_id)
end

redirect_to :action => ‘index’

end

private

def save_tagging(tag_id, taggable_id)
Tagging.create(:tag_id => tag_id,
:taggable_id   => taggable_id,
:taggable_type => “Blog”)
end

def edit_privileges?(blog_id)
blog_id.each do |id|
return true if id == original_id(params[:id]).to_i
end
return false
end

def collect_tag(tag_input)
@collect_tag = tag_input.gsub(” “,”")
@tags = @collect_tag.split(‘,’)
end

Membuat RSS pada Rails

September 2, 2009 Andry Sucipto Komentar dimatikan

yang perlu di siapkan dalam membuat rss adalah file.rxml yang diletakkan pada folder dimana data2 itu akan dibuat  rss, adapun gambaran isinya adalah sebagai berikut :

rss.rxml

xml.instruct!

xml.rss “version” => “2.0″, “xmlns:dc” => “http://purl.org/dc/elements/1.1/” do
xml.channel do

xml.title       “Share your Ascend-Points.com site”
xml.link        url_for(:only_path => false, :controller => ‘blogs’)
xml.description “Blogs in Ascend-Points.com”

@blog.each do |blog|
xml.item do
xml.title         blog.title
xml.description   blog.description
xml.link          url_for(:only_path => false, :controller => ‘blogs’, :action => ’show’, :id => “#{blog.id}”)
end
end

end
end

sedangkan pada controller kita buat def yang sama dengan file :

def rss
@jobs = Job.find(:all, :include => :ambitions,
:conditions => ‘jobs.id = ambitions.job_id’,
:o rder => ‘jobs.name’)
render :layout => false
headers["Content-Type"] = “application/xml; charset=utf-8″
end

sedangkan router.rb kita tambahkan  (option):

map.rss       ‘/rss’, :controller => ‘jobs’,     :action => ‘rss’

Selesai, selamat mencoba … ! semoga berhasil

Categories: Ruby On Rails

Membuat Categori Pada Rails

September 1, 2009 Andry Sucipto Komentar dimatikan

Pertama tama sebelum membuat persiapkan dahulu tabelnya Category dangan perintah :

ruby script/generate model Category name:string

Hasilnya pada migrate :

class CreateCategories < ActiveRecord::Migration
def self.up
create_table :categories do |t|
t.string :name
t.timestamps
add_column :blogs, :category_id, :integer
end
end

def self.down
drop_table :categories
remove_column :blogs, :category_id
end
end

Catatan : Menambahkan category_id pada table yang dikategorykan

rake db:migrate

lalu pada model Category kita tuliskan :

class Category < ActiveRecord::Base
has_many :blogs
end

sedangkan pada Model Blog(dalam contoh) kita tuliskan :

class Blog < ActiveRecord::Base
belongs_to :category

def category_name
category.name if category
end

def category_name=(name)
self.category = Category.find_or_create_by_name(name) unless name.blank?
end
end

Langkah terakhir pada view/new dan edit kita sisipkan :

<p>
Category<br />
<%= text_field ‘blog’, ‘category_name’ %>
</p>

Selesai …. jadi dehhh

Categories: Ruby On Rails Tag: