<%= @page_title = 'xxxxx' %> #这样会出现在html代码里
<% @page_title = 'xxxxx' %> #这样不会出现在html代码里
我还是没有弄明白,求指教。
=evaluate 后面的 expression 并且把值显示再 html 上。 没=是执行后面的代码
从语言的角度,一个被当作 expression,一个被当作 statement.
<%= expression %>
expression
expresssion
<% expression %>
erb
假设有 layout layouts/application.html.erb
layouts/application.html.erb
<html> <head><title><%= @page_title %></title></head> <body> <%= yield %> </body> </html>
下面这个 view
<% @page_title = '1st title' %> <p>1st view</p>
只是设置了@page_title,可以在其它地方用,比如 layout 中,但是本身不会插入到那一行中,所以最终产生
@page_title
<html> <head><title><%= @page_title %></title></head> <body> <p>1st view</p> </body> </html>
第二个
<%= @page_title = '2nd title' %> <p>2nd view</p>
因为赋值语句返回左值,所以@page_title的当前值会插入,最终产生:
<html> <head><title>2nd title</title></head> <body> 2nd title <p>2nd view</p> </body> </html>
这个我个人觉得死背下来就好,规定!;无=号是为了运行 Ruby 代码;有=号是输出;
将=理解为输出