![](/img/trans.png)
[英]How do I use an instance variable assigned in a helper_method from a helper?
[英]What do I do about an empty instance variable in a form helper?
我有兩個關聯的模型,其中case_studies屬於客戶,而客戶has_many很多案例研究。 我的控制器有一個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,並且它正在嘗試對nil做一個collect方法,該方法會崩潰。
Rails處理此問題的方法是什么?
我應該使用存在嗎? 零? 還是空的? 我應該在我的erb中執行此操作還是應該將其放入助手中? 我還應該做點別的嗎?
我的控制器非常簡單。 它有一些來自煉廠的神秘的黑魔法,我剛剛添加了一個前置過濾器
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
也許這是一種可怕的氣味? 不笑就太容易了。 對我的衛生的任何建議也表示贊賞
我認為這樣做很容易:
<%unless @clients.empty?%>
<%= f.label :which_client_does_this_belong_to? %>
<%= f.select(:client_id, @clients.collect{ |c| [c.name, c.id] }) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.