0

我正在尝试扩展like-twitter 应用程序教程并包含我的第一个脚本(无论教程如何)。

我正在尝试制作一个仅在用户登录时才起作用的脚本(我发现我需要制定此规则,因为当用户未登录时我收到脚本错误)。

调用 js 文件static_pages.js.coffee并包含如下代码:

micropost =
  p: {
    ...
  }
  init: ->
    ...

$(document).ready ->
  micropost.init()

由于代码与在用户登录时出现的微博相关,所以我需要一些规则来通知我。

我可以在主文件中放入views/layout/application.html.erb一个带有如下变量的脚本:

<head>
  <title><%=full_title(yield(:title)) %></title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>

  <script type="text/javascript">
      var signed_in = <%= signed_in? =>;
  </script>

  <%= csrf_meta_tags %>
  <%= render 'layouts/shim' %>
</head>

但它看起来不像干净的方式,我的问题是:

  1. 我该怎么做?
  2. 我需要通过控制器来完成吗?(我不知道怎么...)
  3. 而且,我将 $(document).ready 放在 static_pages.js.coffee 中 - 我应该将它放在主 application.js 中,因为这是在构建 dom 后调用所有函数的调用吗?
4

1 回答 1

0

使用这种美:https ://github.com/gazay/gon

包含在 gem 文件中:

gem 'gon'

添加到 application.html.erb(在脚本之前):

  <%= include_gon %>

在任何控制器中,您都可以进行此调用:

class StaticPagesController < ApplicationController
  def home
    gon.signed_in = signed_in?
  end

然后你可以从你的js中获取这个参数:

console.log(gon.signed_in)
于 2012-08-28T21:05:57.087 回答