0

ビューにはモデルやコントローラーに関する知識がないはずですが、それを回避する方法がわかりません。

問題は、ビューで情報を操作する前に、コントローラーまたはモデルから情報を取得しようとしていることです。

ここにコード

Model     
USER       LOCATION      ARTICLE
id         user_id       title
first      article_id    ...
last
...

関係

user has many locations
article has many locations
location belongs to user
location belongs to article

コントローラ

@userlocation = @user.locations

意見

<% @userlocation.each do |event| %>
  ...
  <% evTitle = Article.find_by_id(event.article_id) %>
  <%= evTitle.title %>
<% end %>

明らかに、コントローラーでクエリを実行する方法がわからないのは最善ではなく、evTitleが適切にレポートしないのはなぜですか?

4

2 に答える 2

1

コントローラでは、次のように実行できます。

@userlocations = @user.locations
@locations_articles = Article.find_all_by_id(@userlocations.map(&:article_id).uniq)

その後@locations_articles、ビューで使用できます。ビュー内での使用は避けてくださいdb queries

<% @locations_articles.each do |article| %>
    <%= article.title %>
<% end %>
于 2013-02-17T17:14:26.123 に答える
1

ここで最初にレールが複数のフォームのエピソードをキャストするのを見ることができます:-

http://railscasts.com/episodes/196-nested-model-form-part-1

また、単一のビューフォームで情報にアクセスするには、最初にモデルで定義する必要がある属性があります。

def new @survey = Survey.new 3.times do question = @ Survey.questions.build 4.times {question.answers.build} end end

于 2013-02-17T17:18:32.633 に答える