1

私は 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 の提案に従って

これは、ブラウザでティッカーがどのように見えるかです: ここに画像の説明を入力

これは、HTML ソースが行っていることです。

ここに画像の説明を入力

4

2 に答える 2

1

ヘルパー メソッドを修正するために dimuch の回答に従ってから、html_safe でメソッドを呼び出します。

<ul id="newsticker_1" class="newsticker">
  <%= populate_event.html_safe %>
</ul>
于 2013-01-22T01:50:09.923 に答える
1

ヘルパーの使用法を誤解しています。生成されたページにコンテンツを出力するのではなく、ページに挿入された値を返します。

したがって、ヘルパー メソッドはイベントのコレクションを返します。代わりmapに と組み合わせて使用​​してみてください。join

def populate_event
  @events.map do |event|
    content_tag(:li, link_to(event.title, '#'))
  end.join
end
于 2012-12-20T06:42:09.860 に答える