2013-03-06 57 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