「top」というメソッドを含む「NewsItem」コントローラーを作成しました。これは、ページ上の DIV を 10 秒ごとに更新する JavaScript リクエストによって呼び出されます。これはすべてうまくいっています。
def top(number = false)
# set the default value to use for the number
default_number = 10;
# perform checks on the variable
if number == false
if params.include?(:number)
number = params[:number]
else
number = default_number
end
end
# Run query to get the required news items
items = NewsItem.all( :order => ("created_at DESC"),
:include => [:profile],
:limit => number)
# iterate around the items that have been returned
@top_news = ""
items.each do |item|
@top_news += render_to_string :partial => "partials/news_item", :locals => {:item => item}
end
respond_to do |format|
format.html { render :partial => "partials/news_top"}
end
end
これは、返されるアイテムの数を変更するために、'/news/top' または '/news/top/20' で呼び出されます。
問題は、ページが最初にロードされたとき、JavaScript が DIV を更新するために実行されるまで、「ニュース」DIV が 10 秒間空であることです。したがって、この関数を呼び出すことによって、DIV が既に設定されていることを確認したいと思います。
ここで、'news' DIV をすべてのページで利用できるようにしたいので、'layouts/application.html.erb' テンプレートで定義します。そのため、「NewsItem」コントローラーで「top」メソッドを呼び出して、最初の HTML にレンダリングできるようにする必要があります。これは、「helper_method」を使用してこの段階でこれを利用可能にする方法がわからないため、私が苦労しているところです。
ここで何かが欠けていて、プロセス全体を理解していないと感じています。
ご協力いただきありがとうございます。
よろしく、ラッセル