避免在mvc中出现问题

时间:2013-02-17 17:05:47

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller

我知道视图不应该对模型或控制器有任何了解,但我不确定如何避免它。

问题是我想在我需要在我的视图中操作它之前从控制器或模型中获取信息。

这里是代码

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没有正确报告原因?

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:1)

您可以先在这里观看导演多曲目剧集: -

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

并且首先应该在模型中定义一个属性,以便以单一视图形式访问信息。

def new   @survey = Survey.new   3次     question = @ survey.questions.build     4.times {question.answers.build}   结束 端