我正在尝试构建一个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"
任何帮助将不胜感激!
答案 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
希望它有所帮助!