js函数没有被rails控制器动作调用 - 找不到原因

时间:2013-03-08 16:54:36

标签: jquery ruby-on-rails routing

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

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

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

流程是: 登录(通过Facebook)=>回家。没有按钮调用动作“Home”,因为我使用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"

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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

希望它有所帮助!