2013-02-17 118 views
0

我知道一個視圖不應該有模型或控制器的任何知識,但我不確定如何避免它。避免mvc問題

問題是我想從控制器或模型中獲取信息,然後我需要在我的視圖中操作它。

在這裏,代碼

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不正確報告爲什麼?

回答

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 %> 
+0

唯一的問題,與這是article_id只是指的第一篇文章,我不看第二個和第三個 – Jseb 2013-02-17 18:01:28

+0

不,它會給所有屬於那些位置的文章。 – codeit 2013-02-17 18:23:46

1

您可以先觀看軌在這裏投下多個表單插曲: -

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

而且是首先你應該確定模型在單一視圖的形式訪問信息的屬性。

高清新 @survey = Survey.new 3.times做 問題= @ survey.questions.build 4.times {} question.answers.build結束 結束