![](/img/trans.png)
[英]Debug Information Shown as Part of Footer and Displaying Only One Line? Michael Hartl's Ruby on Rails Tutorial Chapter 7
[英]More Detailed Explanation on Michael Hartl's Tutorial
在Michael Hartl的教程中,它是這樣寫的
<%= f.label :name %>
<%= f.text_field :name %>
它成為了
<label for="user_name">Name</label>
<input id="user_name" name="user[name]" type="text" />
和
<%= f.label :email %>
<%= f.email_field :email %>
變
<label for="user_email">Email</label>
<input id="user_email" name="user[email]" type="email" />
找了這么久,但我真的不明白代碼如何轉換為html。 誰能解釋?
這些都包含在以下代碼中
<%= form_for(@user) do |f| %>
.
.
.
<% end %>
label
<%= f.label :email %>
實際上只是一個方法調用:您調用form.label(:email)
。 <%=
是<% print
縮寫。
這些方法是表單幫助器,包含在FormHelper的表單對象中。
如果您查看label方法中的代碼,您將看到它實例化了一個Tags::Label
對象。
更深入地了解Tags::Label
可以label_tag
很多作用,但是最重要的部分是對label_tag
的調用。 呈現標簽標簽。
通過使用humanize
助手,標簽標記的內容從:email
更改為Email
。 (我們暫時忽略所有本地化和翻譯)。 您可以在任何地方使用這些幫助器。 用rails console
打開一個rails console
:
:email.to_s.humanize #=> "Email"
:postal_code.to_s.humanize #=> "Postal code"
在Rails中,大多數堆棧都是很難遵循的,因為它們既被抽象為模型(以允許重用),又被大量邊緣情況(例如本地化或XSS安全性)混入大量其他“內容”中,代碼遵循的路徑更難理解。
但是,簡而言之, <%= f.label(:email) %>
可以大致翻譯為print label_tag(:email.to_s.humanize, id: :email)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.