关于 rails 渲染参数
About rails render argument
从edit.html.erb来看,
<%= render 'form', post: @post, url: authors_post_url(@post) %>
第二个参数post:@post是什么意思?这是将 @post 命名为 post 用于部分 _form 吗?
来自_form.html.erb部分文件,
<%= form_for(post, url: url) do |f| %>
<% if post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% if @post.persisted? %>
<%= link_to 'Show', @post %>
<% end %>
<% end %>
如上所示,@post 仍在使用,这违背了在上面的渲染行中将 @post 命名为 post 的目的。
As seen above, @post
are still being used which defeats the purpose of naming @post
to post
in the render line above.
没错!这是某人草率的编码。该语法的目的是从其环境中抽象部分,以便它不必依赖 @post
可用。在另一个页面上,部分可能会这样呈现,例如:
<%= render 'form', post: Post.new, url: authors_posts_url) %>
如果部分遵循规则并且只使用它的本地 post
,它将继续工作。但是你问题中的那个,它会坏掉。
从edit.html.erb来看,
<%= render 'form', post: @post, url: authors_post_url(@post) %>
第二个参数post:@post是什么意思?这是将 @post 命名为 post 用于部分 _form 吗?
来自_form.html.erb部分文件,
<%= form_for(post, url: url) do |f| %>
<% if post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<% if @post.persisted? %>
<%= link_to 'Show', @post %>
<% end %>
<% end %>
如上所示,@post 仍在使用,这违背了在上面的渲染行中将 @post 命名为 post 的目的。
As seen above,
@post
are still being used which defeats the purpose of naming@post
topost
in the render line above.
没错!这是某人草率的编码。该语法的目的是从其环境中抽象部分,以便它不必依赖 @post
可用。在另一个页面上,部分可能会这样呈现,例如:
<%= render 'form', post: Post.new, url: authors_posts_url) %>
如果部分遵循规则并且只使用它的本地 post
,它将继续工作。但是你问题中的那个,它会坏掉。