2016-08-01 21 views
1

私のコントローラから値を取得しようとしていて、ログに正しく表示されています。しかし、私は私のビューでこれを印刷すると、エラーが発生します。Ruby on Rails - 値はログに正しく表示されますが、表示されません

コントローラー:

@leads = Lead.all.order('updated_at desc') 
    @leads.each do |k| 
     if k.lead_propertiesproperty_id = k.lead_properties.map(&:property_id) 
     properties = Property.where(:id => property_id) 
     category_ids = properties.map(&:property_category_id) 
     categories = PropertyCategory.where(:id => category_ids) 
     @category_names = categories.map(&:name).exists? 

     Rails.logger.debug("categories: #{categories.inspect}") 
     Rails.logger.debug("category_names: #{@category_names.inspect}") 
     else 
     @properties = "No Properties" 
     @locations = "No Locations" 
     end 
    end 
    @leads_total = Lead.all.count 

ビュー:

<tbody> 
    <% @leads.each do |lead| %> 
    <tr class="<%=cycle('odd', 'even') %> location_row" id="lead_row" data-id="<%= lead.id%>"> 
     <td><%= lead.id %></td> 
     <td><%= lead.fullname %></td> 
     <td><%= lead.email %></td> 
     <td><%= lead.phone %></td> 
     <td><%= @category_names.to_sentence %></td> 
     <td><%= select_tag :status, options_for_select(Lead.statuses.keys.to_a{|k, v| [k.humanize.capitalize, v]}, lead.status), :class => "lead_status"%></td> 
     <td><%= lead.created_at.strftime("%d %b. %Y - %T")%></td> 
     <td><%= link_to (fa_icon "pencil-square-o "), edit_lead_path({:id => lead.id, :first_last_name => lead.first_last_name}), :title => 'Edit Lead', :class => "action-button" %></td> 
    </tr> 
    <% end %> 
    </tbody> 

エラー: コントローラでは、それが適切なカテゴリを与えるログ(。例えば机、仮想、プライベート)各リードの値ですが、ビューでは、リードごとに最後のリードのカテゴリ値を示します。

+0

どういうところが違うのですか? –

+0

エラーはなく、最初のリードのプロパティカテゴリの値を返します。 "バーチャル" ..代わりに、それは約行のカテゴリを与える必要があります。質問に更新を追加します。 –

+0

エラーがどこにあるかは分かりません。あなたは何が望まれているのか、あなたは実際に答えを得るのかを記述してください。コードにコメントを追加して、何をしているのかを示すことができます。 –

答えて

1

正しく理解できれば、@ category_namesがループ内に割り当てられているからです。ループはカテゴリを初回実行時には「机」であれば

だから例えば@category_namesは「机」になり

しかし二回目は、それがカテゴリが@category_name変数が上書きされた「仮想」となり実行されます。

あなたがリード

@category_names = {} 

@lead.each do |lead| 
    If lead.category_name.is_what_i_want? 
    @category_names[lead.id.to_s] = lead.category_names 
    end 
    end 

非常に偽のIDをハッシュにcategory_namesをプッシュする必要があるが、それはビューで次にあなた

を助けるべきでやる

@category_names [リード.id.to_s] .to_sentence

+0

恐ろしく、ほとんど動作します。残念ながら今のところto_sentenceだけはもう使えません。私は.to_sのために推測していますか? –

+0

私が得ているエラーは次のとおりです。未定義メソッド 'to_sentence 'for nil:NilClass –

+0

気にしないでください。それを私が直した。 @category_names [k.id.to_s] = [""]をコントローラのelse部分に追加しなければなりませんでした。 –

関連する問題