======
README
======
About
=====
merb_helpers_monkey is a Merb plug-in to extend the following helper methods.
* radio_button() to take boolean value as :checked options.
* fields_for(), form_for(), and fieldset_for() to take :index_by option.
Install
=======
### install gem
$ sudo gem install merb_helpers_monkey
## add 'dependency "merb_helpers_monkey"
$ vi config/dependencies.rb
Usage
=====
radio_button()
--------------
In Merb, 'radio_button :checked=>true' and 'radio_button :checked=>false'
will genereate:
<input type="radio" checked="true" />
<input type="radio" checked="false" />
But the following output should be generated:
<input type="radio" checked="checked" />
<input type="radio" />
Merb_helpers_monkey extends radio_button() to generate the above <input> tag.
So you can write such as 'radio_button :checked=>(params[:foo]="y")'.
fields_for(), form_for(), fieldsset_for()
-----------------------------------------
These methods are extended to accept new ':index_by' option.
For example:
<% @users.each do |user| %>
<%= fields_for user, :index_by => :id do %>
<p>
<%= text_field :name, :label => 'Name' %>
<%= text_field :mail, :label => 'Mail' %>
</p>
<% end =%>
<% end %>
will generate:
<p>
<label for="user_name_101">Name</label>
<input type="text" name="user[101][name]" id="user_name_101" value="Foo" />
<label for="user_mail_101">Mail</label>
<input type="text" name="user[101][mail]" id="user_mail_101" value="[email protected]" />
</p>
<p>
<label for="user_name_102">Name</label>
<input type="text" name="user[102][name]" id="user_name_102" value="Bar" />
<label for="user_mail_102">Mail</label>
<input type="text" name="user[102][mail]" id="user_mail_102" value="[email protected]" />
</p>
and the following parameters will be sent:
params = {
:user => {
"101" => { :name => "Foo", :mail => "[email protected]" },
"102" => { :name => "Bar", :mail => "[email protected]" },
}
}
So you can define controller action like the following:
def update
params[:user].each do |user_id, values|
user = User.get(ur_id) or raise NotFound
user.update_attribute(values)
...
end
end
Author
------
makoto kuwata <kwa(at)kuwata-lab.com>
copyright(c) 2008 kuwata-lab.com all rights reserved.
License
-------
MIT License
README
======
About
=====
merb_helpers_monkey is a Merb plug-in to extend the following helper methods.
* radio_button() to take boolean value as :checked options.
* fields_for(), form_for(), and fieldset_for() to take :index_by option.
Install
=======
### install gem
$ sudo gem install merb_helpers_monkey
## add 'dependency "merb_helpers_monkey"
$ vi config/dependencies.rb
Usage
=====
radio_button()
--------------
In Merb, 'radio_button :checked=>true' and 'radio_button :checked=>false'
will genereate:
<input type="radio" checked="true" />
<input type="radio" checked="false" />
But the following output should be generated:
<input type="radio" checked="checked" />
<input type="radio" />
Merb_helpers_monkey extends radio_button() to generate the above <input> tag.
So you can write such as 'radio_button :checked=>(params[:foo]="y")'.
fields_for(), form_for(), fieldsset_for()
-----------------------------------------
These methods are extended to accept new ':index_by' option.
For example:
<% @users.each do |user| %>
<%= fields_for user, :index_by => :id do %>
<p>
<%= text_field :name, :label => 'Name' %>
<%= text_field :mail, :label => 'Mail' %>
</p>
<% end =%>
<% end %>
will generate:
<p>
<label for="user_name_101">Name</label>
<input type="text" name="user[101][name]" id="user_name_101" value="Foo" />
<label for="user_mail_101">Mail</label>
<input type="text" name="user[101][mail]" id="user_mail_101" value="[email protected]" />
</p>
<p>
<label for="user_name_102">Name</label>
<input type="text" name="user[102][name]" id="user_name_102" value="Bar" />
<label for="user_mail_102">Mail</label>
<input type="text" name="user[102][mail]" id="user_mail_102" value="[email protected]" />
</p>
and the following parameters will be sent:
params = {
:user => {
"101" => { :name => "Foo", :mail => "[email protected]" },
"102" => { :name => "Bar", :mail => "[email protected]" },
}
}
So you can define controller action like the following:
def update
params[:user].each do |user_id, values|
user = User.get(ur_id) or raise NotFound
user.update_attribute(values)
...
end
end
Author
------
makoto kuwata <kwa(at)kuwata-lab.com>
copyright(c) 2008 kuwata-lab.com all rights reserved.
License
-------
MIT License