Rails中的jQuery Newsticker 3

时间:2012-12-20 04:10:58

标签: jquery ruby-on-rails-3 news-ticker

我对Rails相当新,我正在尝试使用codecanyon中的jQuery newsticker来显示已输入数据库的最新事件标题。这里的例子: http://codecanyon.net/item/jnewsticker-jquery-news-ticker/full_screen_preview/2137525

现在,它显示了数据库中的每个条目,以及事件表中的所有行,而不仅仅是标题,我认为脚本对此感到窒息。

我希望它只显示最近的10个事件。

在我的 events_helper.rb 帮助中,我有:

module EventsHelper

    def populate_event
      @events.each do |event|
        content_tag(:li, link_to(event.title, '#'))
      end
    end

end

在我的 events_controller.rb 控制器中,我有:

class EventsController < ApplicationController
  before_filter :signed_in_user

  def create
    @event = current_user.events.build(params[:event])
    if @event.save
      flash[:success] = "Event created!"
      redirect_to root_url
    else
      render 'static_pages/home'
    end
  end

  def destroy
  end

  def show
    @event = Event.find(params[:id])
    @events = Event.recent
  end
end

在我的 event.rb 模型中,我有:

scope :recent, order(updated_at: 'DESC')

在我的 _ticker.html.erb 部分我

<ul id="newsticker_1" class="newsticker">
   <%= populate_event %>
</ul>

当我在浏览器中查看源代码时,列表中没有<li>个标记。

看起来像这样:

<ul id="newsticker_1" class="newsticker" style="position: absolute; left: 10px;">
   [#&lt;Event id: 29196, title: "This is a title", tag: nil, privacy_level: 1, group: nil, image_url: nil, start_date: nil, end_date: nil, start_location: nil, end_location: nil, start_geolocation: nil, end_geolocation: nil, content: "Quia officiis voluptatum doloribus cum ut ea sed ve...", user_id: 2, created_at: "2012-12-09 03:51:26", updated_at: "2012-12-09 03:51:26"&gt;, #&lt;Event id: 29190, title: "This is a title", tag: nil, privacy_level: 1, group: nil, image_url: nil, start_date: nil, end_date: nil, start_location: nil, end_location: nil, start_geolocation: nil, end_geolocation: nil, content: "Dolor consequatur sed enim omnis asperiores fugit r...", user_id: 2, created_at: "2012-12-09 03:51:26", updated_at: "2012-12-09 03:51:26"&gt;
</ul>

看起来应该是这样的:

<ul id="newsticker_1" class="newsticker">
    <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</li>
    <li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip...</li>
    <li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum...</li>
    <li>Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia...</li>
    <li>Bubble bubble ipsum dolor sit amet, consectetur adipisicing elit...</ li>
</ul>

更新

遵循以下Dimuch的建议

这是浏览器中的自动收录器: enter image description here

这是HTML源代码的作用:

enter image description here

2 个答案:

答案 0 :(得分:1)

你误解了助手的用法。它不会将内容输出到生成的页面,它会返回一个插入页面的值。

因此,您的帮助方法返回事件集合。请尝试将mapjoin结合使用。

def populate_event
  @events.map do |event|
    content_tag(:li, link_to(event.title, '#'))
  end.join
end

答案 1 :(得分:1)

在遵循dimuch的修复辅助方法的答案之后,使用html_safe调用方法:

<ul id="newsticker_1" class="newsticker">
  <%= populate_event.html_safe %>
</ul>