pez*_*ser 5 symbols ruby-on-rails instance-variables presentation-layer
<% form_tag(:action=>'update', :id=>@album.id) do %>
Title: <%= text_field(:album, :title) %><br>
Artist: <%= text_field(:album, :artist) %><br>
Genre: <%= text_field(:album, :genre) %><br>
Release Date: <%= datetime_select(:album, :release_date, :start_year=>1960) %><br>
<%= submit_tag("Update") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我不得不在form_tag中说@ album.id但在text_field中我不得不说:专辑.我在我的观点中一直混淆这些,并且从不真正知道是否使用@符号或符号.是否有一个简单的规则可以明确说明什么时候使用?
Rya*_*igg 14
我要在这里切断一会儿,但要忍受我.
首先,我建议您使用RESTful路由,因为这使您可以访问一些Rails更好的方法和操作,例如能够:
form_for(@album) do |f|
Run Code Online (Sandbox Code Playgroud)
并根据#new_record?该对象的状态确定您想要去的地方.
其次,随着新form_for的到位,您将能够通过以下方式干扰您的观点:
<%= f.text_field :title %>
Run Code Online (Sandbox Code Playgroud)
代替:
<%= text_field :album, :title %>
Run Code Online (Sandbox Code Playgroud)
最后解释为什么在Rails中使用@符号定义变量,也称为"实例变量":
当你定义在Rails的一个实例变量,它是可用的情况下为整个请求内里的"实例"是ActionController和ActionView那被调用来完成所有的渲染等等为你的方法链.其定义为一个实例变量将使它在你的控制器可用,则控制器定义后调用任何方法,你的助手,你的意见和谐音从您的控制器,助手或视图渲染.
基本上,它适用于整个请求,但在模型中无法访问.
其他变量规范是类变量(@@some_useful_thing = 1)和全局变量($some_other_useful_thing = 1)和常量(ALL_IN_UP_CASE = 1).
变量名前面的@符号表示当前类中的实例变量.:(冒号)前缀创建一个Symbol.在您的示例中,@album.id将@album实例变量的id发送到form_tag,允许form_tag从数据库中读取该对象,并使用该对象中的相应数据填充表单字段.您在text_field方法中传递的符号form_tag用于访问它从数据库创建的对象的特定属性.然后,它将这些属性的值放入它生成的文本字段中.
| 归档时间: |
|
| 查看次数: |
6820 次 |
| 最近记录: |