簡體   English   中英

我如何處理表單助手中的空實例變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM