1

関連する projectname (db プロジェクトのフィールド) と has_many_through の experimenttype (db experiment のフィールド) を表示する要素インデックス ビューを作成しようとしています。

モデル要素.rb

class Element < ActiveRecord::Base

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

has_many :experiments

attr_accessible :project_ids, :experiment_ids

モデル project.rb

class Project < ActiveRecord::Base

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

attr_accessible :projectname, :element_ids

モデル 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>    

これを行うと、関連するプロジェクトオブジェクト全体が表示されます...実験と同じで、表示を1つの属性に制限する方法がわかりませんか?

または、データが 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 %>

そこからインデックスビューを生成する簡単な方法があるのだろうか(おそらく、いくつかのレンダリング「フォーム」オプションを使用して?)助けていただければ幸いです...

4

1 に答える 1

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 %>
于 2012-06-18T15:53:27.520 に答える