【问题标题】:Ruby on Rails : displaying one attribute value from an associated model on an index viewRuby on Rails:在索引视图上显示关联模型的一个属性值
【发布时间】:2012-06-14 17:04:09
【问题描述】:

我试图让元素索引视图显示关联的项目名称(来自 db 项目的字段)和来自 has_many_through 的实验类型(来自 db 实验的字段),并且属于/拥有许多关联模型

模型元素.rb

class Element < ActiveRecord::Base

has_many :project_elements   
has_many :projects, :through => :project_elements

has_many :experiments

attr_accessible :project_ids, :experiment_ids

模型项目.rb

class Project < ActiveRecord::Base

has_many :project_elements
has_many :elements, :through => :project_elements  

attr_accessible :projectname, :element_ids

model project_element.rb

class ProjectElement < ActiveRecord::Base
belongs_to :project
belongs_to :element
attr_accessible :project_id, :element_id

模型实验.rb

class Experiment < ActiveRecord::Base

belongs_to :element

has_many :welldish_experiments
has_many :welldishs, :through => :welldish_experiments

attr_accessible :exptype, :element_id

elements_controller.rb

  def index
   @elements = Element.all
   respond_to do |format|
     format.html # index.html.erb
     format.json { render json: @elements }
     end

/elements/index.html.erb

 <% @elements.each do |element| %>
  <tr>

    <td><%= element.experiments %></td>
    <td><%= element.projects %></td>    

当我这样做时,它会向我展示整个相关的项目对象... 实验相同 我不知道如何将显示限制为一个属性?

或者,因为数据是使用 formtastic 生成的:

元素/_form.html.erb

       <%= semantic_form_for @element do |f| %>    
       <%= f.inputs do %>  
         <%= f.input :projects, :label => "projet associé", :required => true%>
         <%= f.input :experiments, :label => "type d'experience",
     :as => :radio,       :collection => Experiment.all, :required => true %>    
       <% end %>
       <%= f.actions :submit, :cancel %>
       <% end %>

我想知道是否有一种快速的方法来生成索引视图(可能有一些渲染“表单”选项?) 任何帮助将不胜感激...

【问题讨论】:

    标签: attributes indexing has-many-through formtastic model-associations


    【解决方案1】:

    答案在这里(收集方法): http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

      <% @elements.each do |element| %>
           <tr>          
           <td><%= element.projects.collect { |a| a.projectname }%></td>
           </tr>
      <% end %>
    

    【讨论】:

    • @Alessandro 感谢您的爱情宣言。你也可以投票给答案和问题:)
    • 但是你找到不显示括号的方法了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    相关资源
    最近更新 更多