0

「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」を使用してこの段階でこれを利用可能にする方法がわからないため、私が苦労しているところです。

ここで何かが欠けていて、プロセス全体を理解していないと感じています。

ご協力いただきありがとうございます。

よろしく、ラッセル

4

1 に答える 1