從Rails guide學習,我不明白下面local_assign
是如何工作的:Rails的local_assign與局部變量
傳遞一個局部變量的部分僅在特定情況下使用 local_assigns。
index.html.erb
<%= render user.articles %>
show.html.erb
<%= render article, full: true %>
_articles.html.erb
<h2><%= article.title %></h2> <% if local_assigns[:full] %> <%= simple_format article.body %> <% else %> <%= truncate article.body %> <% end %>
這樣就可以使用局部變量而不需要聲明 。
如果show action的名稱爲_articles
,它只會顯示索引操作,它是如何渲染的?我也不明白你爲什麼使用full: true
時可以使用locals: {full:true}
。有什麼不同?
'render:locals:{full:true}'和'render full:true'之間沒有實際區別,它們都分配一個名爲'full'的局部變量,後者只是一個較新的簡寫。 – max
關於你的第一個問題,名字'_articles'是一個錯字。部分名稱應該是'_article'。我已經打開了一個[pull request to fix the guide](https://github.com/rails/rails/pull/27896) – meagar