2011年9月27日火曜日

Rails sqliteでboolean

Shop.paginate(:page => 1,:per_page => 5,:conditions => ['ec_flag = ?',true])
■mysql では boolean は true と false ですが、sqlite3 では 1 と 0 だからということなのですね。

2011年9月26日月曜日

rails3 1つ前のURLに戻る

<input type=button value="買い物を続ける" onClick="history.go(-1)">

2011年9月22日木曜日

rails3 失敗したscaffoldを削除する

取り消したいscaffold名を*****で実行する。
$ rails destroy scaffold *****
 

Javascriptでのデバック関数

<script type="text/javascript"><!--
function print_r(obj) {
var count_obj = 0;
    function _output(str) {
       document.writeln(str + "<br/>");
    }
    function _print_r(obj, name, level) {
        var s = "";
        if (obj == undefined || level > 4) return;
        for (var i = 0; i < level; i++) { s += " | "; }
        s += " - " + name + ":" + typeof(obj) + "=" + obj;
        _output(s);
        if (name == "document" || typeof(obj) != "object") return;
        for ( key in obj ) {
        if (count_obj++ > 150) return;
            _print_r(obj[key], key, level + 1);
        }
    }
      _print_r(obj, "*", 0);
}
//-->
</script>

2011年9月21日水曜日

rails3 でsessionを情報をDBで管理

$ rake db:sessions:create
$ rake db:migrate
また、config/initializers/session_store.rbの8行目
********::Application.config.session_store :active_record_store
のコメントをはずす,
また、3行目の下記をコメントに変更
#Application.config.session_store :cookie_store, :key => '_market_session' 
でOKです。


2011年9月15日木曜日

Rails3 ネストしたコントローラへの値の渡し方

 ■たとえば下記のようrake routesがあったとすると、
new_shop_shop_article GET    /shops/:shop_id/shop_articles/new(.:format){:action=>"new",:controller=>"shop_articles"}
のように値をわたせばよ、

new_shop_shop_article_path(@shop)


■また、下記のような場合だと

edit_shop_shop_article GET    /shops/:shop_id/shop_articles/:id/edit(.:format){:action=>"edit", :controller=>"shop_articles"}


edit_shop_shop_article(@shop,@shop_articles)やedit_shop_shop_article()でOKです。たぶん

redirect_toアクション指定

■下記はrake routes の表示
 shop_admin_relay GET    /shop_admin_relays/:id(.:format){:action=>"show",:controller=>"shop_admin_relays"}


■redirect_toでshop_admin_relay_pathを記述せず@shop_admin_aelay.shop_adminだけを渡すと、


format.html { redirect_to(@shop_admin_aelay.shop_admin 。。。。
のように渡すとshopコントローラのshowメソッドが存在する場合,
shopのshowにアクションが移ってしまうが、
*下記にように指定shop_admin_relay_pathするとrake routesの記載どうりアクションが移動する
format.html { redirect_to(shop_admin_relay_path(@shop_admin_aelay.shop_admin)

2011年9月14日水曜日

findメソッドでActiveRecord::RecordNotFoundの対処

find_by_idを使いましょう、
こちらはnilが帰ってきます。

rails 多対多

rails generate scaffold group name:string

rails generate scaffold menber name:string

rails generate migration group_and_menber







class GroupAndMenber < ActiveRecord::Migration
  def self.up
    create_table :group_and_menbers do |t|
      t.integer :menber_id
      t.integer :group_id
    end
  end

  def self.down
    drop_table :group_and_menbers
  end
end

class GroupAndMenber < ActiveRecord::Base
  belongs_to :menber
  belongs_to :group
end


class Group < ActiveRecord::Base
  has_many :group_and_menbers
  has_many :menbers, :through => :group_and_menbers
end

class Menber < ActiveRecord::Base
  has_many :group_and_menbers
  has_many :groups, :through => :group_and_menbers
end



menber = Menber.new(:name => 'menber1')
menber.save
group = Group.new(:name => 'group1')
group.save  

menber.groups << group

で多対多が成立します







2011年9月13日火曜日

rails3 fields_forでcontrollerに配列渡し



    <%= fields_for :パラメータ名 do |field| %>
        <% @mise_admins.each do |mise_admin| %> 
              <%= field.check_box %><%= mise_admin.name %>
          <% end %>   
    <% end %> 


解説:fields_for :パラメータ名 の部分がparams[:パラメータ名]になり、
{"1"=>"0", "2"=>"1", "3"=>"1"}に受け取ることができます。1と0で判別します

rails3 多対多

rails generate scaffold man name:string

rails generate scaffold woman name:string

rails generate migration create_to_man_woman


class Woman < ActiveRecord::Base
  has_and_belongs_to_many :mans
end


class Man < ActiveRecord::Base
  has_and_belongs_to_many :womans
end

class CreateToManWoman < ActiveRecord::Migration
  def self.up
    create_table :men_women, :id => false do |t|
      t.integer :man_id
      t.integer :woman_id
    end
  end

  def self.down
    drop_table :man_woman
  end
end





m = Man.create(:name => 'man1')
w = Woman.create(:name => 'woman1')
m.womans << w


m = Man.create(:name => 'man3')
m.womans << w

rails3では<%= check_box_tag の引数

<%= check_box_tag '第1引数','第2引数' %>
第1引数はidとnameになります。
第2引数はvalueになります。

2011年9月2日金曜日

link_to タグでアクション指定

<% @shops.each do |shop| %>
  <tr>
    <td><font size="1"><%= shop.name %></font></td>
    <td><font size="1"><%= shop.address %></font></td>
     <td><%= link_to("確認",  :action => "show", :id => shop) %>
  </tr>
<% end %>