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

您可以先在这里观看 rails cast 多种形式的剧集:-

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 回答