0

ネストされたモデルがあります

resources :customer do
  resources :readings
end

お客様のモデルは

class Customer < ActiveRecord::Base
 attr_accessible :first_name, :last_name, :phase_type, :readings_attributes
 has_many :readings
end

コントローラーの読み取り値

 class Reading < ActiveRecord::Base
   attr_accessible :customer_id, :date_of_reading, :reading1, :reading2, :reading3
   belongs_to :customer
 end

顧客のモデルの phase_type に基づいてパーシャルをレンダリングする方法を決定するヘルパー メソッドを作成しましたが、ヘルパー メソッドは読み取り編集ビューのフォームでレンダリングされます。

readings/_form_reading のフォームは

<%= simple_form_for [@reading.customer, @reading], :html => { :class => 'form- horizontal' } do |f| %>
<%= render "shared/error_messages", :target => @reading %>
<%= f.input :customer_id %>
<%= f.input :date_of_reading, :as => :date %>
<%= render_readings_conditionally(f) %>
<div class="form-actions">
  <%= f.button :submit, :class => 'btn-primary' %>
  <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
              customer_path, :class => 'btn' %>
</div>
<% end %>

Render_readings_conditionally ヘルパーは

module ApplicationHelper
def render_readings_conditionally(form)
 if @customer.phase_type == 'Single Phase'
  render 'readings/single_phase',f: form
 else
  render 'readings/three_phase',f: form
 end 
 end
end

私が抱えている問題は、パーシャルを無条件にレンダリングするために顧客フェーズ タイプのタイプを決定する必要があることですが、@customer.phase_type は読み取りモデルにないため機能しません。どうすればアクセスできますか?

4

1 に答える 1

0

あなたが何をしたいのかわかりませんが、これは何かに役立つかもしれません。ネストされたリソースの routes.rb は次のようになります。

resources :customers do
  resources :readings
end

@reading で phase_type にアクセスしたい場合

@reading.customer.phase_type

Rails のネストされたリソース ガイド

于 2012-11-22T18:44:18.620 に答える