2013-02-17 119 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结束 结束