2010-11-16 7 views
1

j'ai ce dans le contrôleurcomment une requête en mode Ruby on Rails

@ads = Ad.all (: Relie => 'LEFT JOIN states ON ads.state_id = states.id')

mais j'ai un problème pour interroger le tableau des champs d'états. une idée?

<% @ads.each do |ad| %> 
    <tr> 
    <td><%= ad.title %></td> <- title is ad field.no problem 
    <td><%= ad.name %></td> <- name is states field.problem at here 
    </tr> 
<% end %> 
+0

Quelle est l'erreur que vous obtenez avec ad.name? – johnmcaliley

Répondre

0

Je pense que vous avez besoin de mettre ceci: ads.state_id = states.id comme ceci: #{ads.state_id = states.id}

Le #{ } évaluera le code rubis à l'intérieur. Sinon, ce que vous avez est juste du texte à l'intérieur d'une chaîne.

Cependant, je ne suis pas tout à fait sûr de votre problème, donc je ne suis pas tout à fait sûr que ça va le réparer.

+0

les jointures doivent contenir du texte dans cette requête particulière – johnmcaliley

2

Je ne pense pas que cela fonctionnera à moins que vous n'ayez configuré des associations. À moins la performance est une préoccupation, vous pouvez simplement à utiliser l'association sans joint

ad.rb

class Ad < ActiveRecord::Base 
    belongs_to :state 
end 

state.rb

class State < ActiveRecord::Base 
    has_many :ads 
end 

contrôleur

@ads = Ad.all 

vue

<% @ads.each do |ad| %> 
     <tr> 
     <td><%= ad.title %></td> 
     <td> 
      <%= ad.state.name %> 
     </td> 
     </tr> 
    <% end %> 
+0

vous pouvez également regarder inclut si la performance est une préoccupation .. pourrait mieux répondre à vos besoins que les jointures – johnmcaliley