2017-05-25 72 views
0

从edit.html.erb观点,关于轨道参数渲染

<%= render 'form', post: @post, url: authors_post_url(@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的目的在渲染线后上方。

回答

1

如上所见,@post仍在使用这违背在上面的渲染线命名@postpost的目的。

正是!对某个人来说,这是潦草的编码。该语法的目的是从其环境中抽象出部分,以便它不必依赖于可用的@post。在另一页,部分可能呈现这样的,例如:

<%= render 'form', post: Post.new, url: authors_posts_url) %> 

如果部分遵循的规则,只使用其本地post,它会继续工作。但是从你的问题来看,它会打破。