为什么我的.js.erb似乎无法访问我的Pages Helper中定义的方法?

时间:2011-06-21 16:10:43

标签: jquery ruby-on-rails

我有一个页面poweroutput.html.erb,显示客户太阳能系统在特定日期的输出功率。当他们输入不同的日期时,我希望他们看到不同的输出,但无需重新加载页面。在我的页面上,我有一些javascript和一个表单(用于提交用户希望看到电源输出的日期),如下所示:

<head>
  <script type="text/javascript">
    <%= render "pages/poweroutputscript" %>  # renders a partial containing all my js
  </script>
</head>

# a form is here on this page too

我的页面控制器操作目前如下:

def poweroutput      
  # some code 

  if request.xhr?
    @date = params[:dt]         # dt is posted when form is submitted
  else 
    @date = Time.now.getlocal.strftime("%d.%m.%Y")
  end

  respond_to do |format|
    format.html 
    format.js { render :action "pages/poweroutput.js.erb" }
  end
end

并且poweroutput.js.erb如下:

$("script").replaceWith("<script><%= escape_javascript render "pages/poweroutputscript" %></script>");

我的页面助手中有一个名为get_eac_day的方法,在我的_poweroutputscript.html.erb中调用&lt;%= get_eac_day%&gt;。首次加载页面时,它工作正常。但由于某些原因,当部分在javascript请求上呈现时,get_eac_day返回nil。好像部分无法突然访问我的Pages Helper方法。我可以看到它可以访问我的控制器动作中定义的变量(如@date)。我可能会遗漏一些特殊的包含声明吗?还是别的什么?

1 个答案:

答案 0 :(得分:0)

也许您可以将get_eac_day的返回值传递给您的部分,如此:

<%= render "pages/poweroutputscript", :ged => get_eac_day %>

然后像这样编辑你的_poweroutputscript.html.erb:

<%= ged %>