2

我正在尝试构建一个 home.js.erb 文件以匹配我的控制器操作 home.html.erb

我构建了它,并在 js 中进行了一个简单的警报调用,但它没有显示。当我复制/粘贴到我的另一个方法时,警报会起作用。

我希望 js 与我的家庭动作一起工作

流程是:登录(通过 Facebook)=> 回家。没有按钮调用“主页”操作,因为我使用 Facebook 登录,它在 FB 登录用户后通过 Javascript 上的重定向运行。

这是家庭行动:

def home
    respond_to do |format|
        format.html
        format.js
    end 

end

这是 home.js.erb:

$(function(){
alert("Hello");

});

最后是控制器周围的路由,称为会话:

    resources :session 

   match '/signin', :to => "session#signin"
   match '/home', :to => "session#home"
   match '/logout', :to => "session#logout"
   match '/register', :to => "session#register"

任何帮助,将不胜感激!

4

1 回答 1

1

如果我理解正确,您想在输入 home.html 时触发 home.js 警报,对吗?

如果是这种情况,您构建它的方式将不起作用,因为 home.js 和 home.html 不会同时呈现。即当用户登录时,控制器将调用home,格式为html。

我建议这样做:

将以下内容放在布局中的所有 javascript 调用下方。

<%= yield :javascripts -%>

在 home.html.erb 中,添加到顶部:

<% content_for(:javascripts) do %>
  <script type='text/javascript'>
    <%= render :partial => 'session/home.js' %>
  </script>
<% end -%>

注意:由于 home.js.erb 现在是部分文件,因此您必须重命名此文件:

_home.js.erb

希望能帮助到你!

于 2013-03-08T17:59:30.127 回答