class Books < ActiveRecord::Migration
def self.up
create_table :books do |t|
t.column :title, :string, :limit => 32, :null => false
t.column :price, :float
t.column :subject_id, :integer
t.column :description, :text
t.column :created_at, :timestamp
end
end
def self.down
drop_table :books
end
end
在上面rails迁移代码中:books是用符号代表参数吗? :title :price :string这些都是要干什么捏? 我知道ruby中的符号是用来替代字符串节省内存空间 可是这个情形下依然不知道是什么意思啊 求大神解答
<p class="row collapse">
<p class="small-3 columns">
<%= f.label :name, class: "right inline" %>
</p>
<p class="small-9 columns"><%= f.text_field :name %></p>
</p>
<p class="row collapse">
<p class="small-3 columns">
<%= f.label :price, class: "right inline", title: "Price in USD", data: {tooltip: true} %>
</p>
<p class="small-9 columns"><%= f.text_field :price %></p>
</p>
<p class="row collapse">
<p class="small-9 small-offset-3 columns"><%= f.submit %></p>
</p>
还有在erb中也出现了ruby符号的奇怪用法 f.label :price 是要用:price 去代替f.label吗? 急求大神解答 纠结了几天了
ルビの:xxxは記号を表します。
記号 を文字列に変換することはできますが、それらはまったく同じではありません。
シンボルは不変です。
まず第一に、Ruby のすべては object です。各オブジェクトには、メモリ内の物理的な位置を表す一意の object_id があります (ただし、このオブジェクトによって直接アクセスされるわけではありません)。
ただし、整数などの例外もあります。これは、Ruby のリソース節約方法です。
リーリーこれは Ruby の実装です。シンボルは定数と同じです。同じシンボルは同じ object_id を使用します。つまり、メモリ内の位置は同じです。 (定数の object_id は定数の値を直接反映し、処理中にも特別に扱われます)。
上記のコードに関して。 Ruby の関数呼び出しの括弧は省略できます。たとえば、f.label :price は実際には f.label( :price) になります。 同時に、ハッシュの {} も省略できます。xxx=>xxx,xxx=>xxx または xxx:xxx,xxx:xxx となります。 xxx、...}
:価格はパラメータの 1 つにすぎません。
それで登場しました
リーリーこのようなコード、 彼が言いたいのは、
リーリーこのようにして、フォーム f にラベルを作成します。名前は:name、HTML タグ内のクラスは「right inline」です。
リーリーdo|x|...end には特別な意味はなく、{|x|} と同様に、単にブロックを表します。 このコードには反復があり、実際には次のようになります:
リーリーはい、もちろんこれも合法です:
リーリーすると括弧が省略できるので上記のようになります。
Ruby がそのような関数を実装するには、次のものだけが必要です:
リーリーイテレータのより具体的な使用法については、こちらをご覧ください: http://blog.csdn.net/classwang/article/details/4692856