可能重复:
在控制器和视图之间仅传递两个变量 - 最佳实践?
有我的动作:
def list
@codes = Code.order("created_at")
@languages = Language.order('name').collect {|l| [l.name, l.coderay]}
end
这是我的观点(我删除了一些行):
<% @codes.each do |code| %>
<div class="code">
<%= link_to code.title, :action => 'show', :id => code.id %>
<% if code.author %>
@<%= code.author %>
<% end %>
</div>
<% end %>
<%= render :partial => 'shared/error_messages', :locals => {:object => @code} %>
<%= form_for :code, :url => {:action => 'create' }, :html => {:multipart => true} do |f| %>
<%= f.text_field :title %><br />
<%= f.text_area :content %><br>
<%= f.select(:language, @languages, {:selected => 'text'}) %>
<%= f.text_field :author %><br>
<%= f.submit "Submit code" %>
<% end %>
其中有 3 个变量:(@codes
帖子列表)、@code
(当前帖子,用于另一个操作)和 @languages。
我的 IDE 写道:
控制器和视图之间最多应共享两个实例变量 如果控制器和视图之间共享两个以上的实例变量,
此检查会发出警告。控制器应该只管理一个实例变量,再加上一个用于 current_user 变量的实例变量。
通常我在控制器和视图之间共享更多变量(在 PHP 中),有时是 10+。
它是如何在 Rails 中完成的?