我有两个相关的模型,其中case_studies属于客户,客户有很多案例研究。我的控制器有一个before_filter来查找@clients的实例变量的所有客户端。
然后我有一个表单,允许用户选择case_study属于哪个客户端。
使用form_helper,我将case_studies模型限定为变量f和一些字段。
<div class='fields'>
<%= f.label :case_study_title -%>
<%= f.text_field :case_study_title -%>
<%= f.label :which_client_does_this_belong_to? -%>
<%= f.select(:client_id, @clients.collect{ |c| [c.name, c.id] }) -%>
</div>
当我的数据库中没有客户端时,这一切都非常好除了。我知道这是因为@clients是零,并且它正试图在nil上执行一个收集方法,这将会爆炸。
Rails的处理方法是什么?
我应该使用存在吗?零?还是空的?我应该在我的erb中做到这一点还是应该把它放在帮助器中?我应该做点什么吗?
我的控制器非常简单。它有一些神秘的crudify黑魔法来自refinerycms,我只是添加了一个前过滤器
module Refinery
module CaseStudies
module Admin
class CaseStudiesController < ::Refinery::AdminController
before_filter :find_all_clients
crudify :'refinery/case_studies/case_study', :xhr_paging => true
protected
def find_all_clients
@clients = Refinery::Clients::Client.all
end
end
end
end
end
也许这是一种难闻的气味?很容易不被大声笑。任何关于我的卫生的建议也值得赞赏
答案 0 :(得分:-1)
我认为这样做很容易:
<%unless @clients.empty?%>
<%= f.label :which_client_does_this_belong_to? %>
<%= f.select(:client_id, @clients.collect{ |c| [c.name, c.id] }) %>