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 en rubis représente un symbole.
Vous pouvez comprendre le symbole en chaîne , mais ils ne sont pas exactement les mêmes.
le symbole est inchangé.
Tout d'abord, tout dans Ruby est un objet, et chaque objet a un object_id unique qui représente son emplacement physique en mémoire (mais il n'est pas directement accessible à cet objet).
Cependant, il existe quelques exceptions, comme les entiers. Vous constaterez que l'object_id du même entier est le même. C'est la façon dont Ruby économise les ressources.
Il s'agit de l'implémentation de Ruby. Les symboles sont les mêmes que les constantes. Les mêmes symboles utilisent le même object_id, c'est-à-dire que leurs emplacements en mémoire sont les mêmes. (L'object_id d'une constante reflète directement la valeur de la constante et est également traité spécialement lors du traitement).
Comme pour le code ci-dessus. Les parenthèses pour les appels de fonction dans Ruby peuvent être omises. Par exemple, f.label :price est en fait f.label( :price) En même temps, le {} du hachage peut également être omis. Voici ce que vous voyez : xxx=>xxx,xxx=>xxx ou xxx:xxx,xxx:xxx. Ce sont en fait des {:xxx=> xxx, ...>
: le prix n’est qu’un de ses paramètres.
C'est ainsi qu'il est apparu
Code comme ça, Ce qu'il veut dire, c'est
De cette façon, il créera une étiquette sous forme f, le nom est : name, et la classe dans la balise html est "right inline".
do|x|...end n'a pas de signification particulière, tout comme {|x|}, il représente simplement un bloc. Il y a une itération dans ce code, c'est en fait similaire à :
, bien sûr, c'est aussi légal :
Ensuite, cela devient comme ci-dessus car les parenthèses peuvent être omises.
Pour que Ruby implémente une telle fonction, il vous suffit de :
Pour une utilisation plus spécifique des itérateurs, vous pouvez lire ceci : http://blog.csdn.net/classwang/article/details/4692856