2013-03-06 59 views
1

分配实例变量在我的控制器我有以下几点:的Rails在控制器

if params[:option] == "1" 
     id = params[:id] 
     @resultsReceived = true 
     begin 
     @pwvav_ratings = Pwvav.find_by_id(id).recommendation.split(",") 
     #or 
     @pwbab_ratings = Pwbab.find_by_id(id).recommendation.split(",") 
    #or 
     @puvub_ratings = Puvub.find_by_id(id).recommendation.split(",") 
    #or 
     @tic_ratings = Tic.find_by_id(id).recommendation.split(",") 
    rescue 
     redirect_to "/view_api", :flash => { :notice => "Sorry, No records returned for #{id}." } 
     end 

我想设置的每一个实例变量(@pwvav_ratings@pwbab_ratings ...)到中发现,如果查找不无,这样我可以在我看来这么称呼它。我如何检查是否或如果找不到任何东西,请用闪光灯通知进行救援。

回答

0

试试这个。

if params[:option] == "1" 
    id = params[:id] 
    @resultsReceived = true 
    @pwvav_ratings = Pwvav.find_by_id(id) 
    #or 
    @pwbab_ratings = Pwbab.find_by_id(id) 
    #or 
    @puvub_ratings = Puvub.find_by_id(id) 
    #or 
    @tic_ratings = Tic.find_by_id(id) 
    unless @pwvav_ratings || @pwbab_ratings || @puvub_ratings || @tic_ratings 
    redirect_to "/view_api", :flash => { :notice => "Sorry, No records returned for #{id}." } 
    end 
end 

您可以在视图中的每个变量上调用.recomendation.split(',')

+0

当我调用'.recommendation.split(“,”)。在我的视图中,每个都做'我得到'未定义的[]:Array'的方法推荐。任何想法可能会造成这种情况? – Yogzzz 2013-03-06 21:35:59

+0

你正在调用哪个变量'.recomendation.split(',')'? – 2013-03-07 05:02:12

+0

在他们所有。在我看来,我通过'@ pwvav_ratings','@ pwbab_ratings','@ puvub_ratings'和'@ tic_tatings'循环。 – Yogzzz 2013-03-07 05:21:31

0

将此添加到每行的末尾。验证它不是零。 (注意:!,但你也可以使用not

@pwvav_ratings = Pwvav.find_by_id(id).recommendation.split(",") if !Pwvav.find_by_id(id).recommendation.split(",").nil? 

或者你可以使用unless

@pwvav_ratings = Pwvav.find_by_id(id).recommendation.split(",") unless Pwvav.find_by_id(id).recommendation.split(",").nil? 
+0

这是不好的使用:也许find_by_id不会返回任何结果+你正在触发2个查询到数据库(一个测试,一个如果结果存在) – MrYoshiji 2013-03-06 19:03:05

+0

这是真的。我假设它不是首先返回'nil'。真正的答案是将其纳入模型,并在那里有一个“范围”或查找器。测试响应,然后检查是否有可用的东西。这只是一个快速和肮脏的解决方案。 – AdamT 2013-03-06 19:05:58