我对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;">
[#<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">, #<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">
</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的建议
这是浏览器中的自动收录器:
这是HTML源代码的作用:
答案 0 :(得分:1)
你误解了助手的用法。它不会将内容输出到生成的页面,它会返回一个插入页面的值。
因此,您的帮助方法返回事件集合。请尝试将map
与join
结合使用。
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>