在我的页面中使用.each表示未定义的方法

时间:2011-10-09 20:07:08

标签: ruby-on-rails activerecord each

我正在尝试获取名为“Party”的事件列表。我还有一份所有活动的清单,工作正常。所以我把它放在我的pages_controller中:

@events = Event.all.paginate(:page => params[:page])
@upcoming_events = Event.find_by_name("Party")

这就是我的主页的样子:

<% if !signed_in? %>
    <%= link_to "Sign up now!", signup_path, :class => "signup_button round" %>
    <ul class="users">
        <% @upcoming_events.each do |event| %>
            <%= render :partial => 'events/eventhome', :locals => {:event => event} %>
        <% end %>
    </ul>
<% else %>
    <li><%= link_to "Users", users_path %></li>
    <li><%= link_to "Events", events_path %></li>
    <li><%= link_to "Profile", current_user %></li>

    <h3>Upcoming Events</h3>
    <ul class="users">
        <% render @events %>
    </ul>
<% end %>

由于某些原因,当我执行find_by_name时,它会弄乱主页中的.each。我究竟做错了什么?它说.each undefined方法。

2 个答案:

答案 0 :(得分:4)

Dynamic finders就像您的Event.find_by_name("Party")返回您的Event类的实例一样。我想你需要:

@upcoming_events = Event.where(:name=>"Party")

答案 1 :(得分:4)

lucapette's answer包含正确的理由。

然而,您可以使用动态查找器来查找这些,您可以使用find_all_by _ *

@upcoming_events = Event.find_all_by_name("Party")

哪个会达到相同的效果。