访问嵌套模型中的资源

时间:2012-11-22 18:07:15

标签: ruby-on-rails helpers

我有一个嵌套模型

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渲染部分,但是帮助方法在读数编辑视图中以表格形式呈现。

读数/ _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_conditional助手是

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将无法工作,因为它不在读数模型中,我该如何访问它?

1 个答案:

答案 0 :(得分:0)

我不确定你想做什么,但也许这会有所帮助。 于嵌套资源的routes.rb应如下所示:

resources :customers do
  resources :readings
end

如果要在@reading

中访问phase_type
@reading.customer.phase_type

Rails nested resource guide