Rails рендеринг файлов Javascript в представлении и включение переменных Ruby - PullRequest
1 голос
/ 16 февраля 2012

Я хотел бы включить этот код скрипта Coffee в заголовок моего application.html.haml, но я не знаю, где его разместить или как включить объекты ruby.

Вопрос 1. Какя рендеринг и Javascript .js или Coffeescript .coffee, который живет в другом файле?(куда я помещаю файл, в ресурсы? в общую папку?)

Вопрос 2. Как вы смешиваете переменные в ruby ​​(например, глобальные ENV ['APP_ID']) см. код ниже:

    window.fbAsyncInit = ->
  FB.init
    appId: "#{ENV['APP_ID']}"
    status: true
    cookie: true
    oauth: true
    xfbml: true

((d) ->
  js = undefined
  id = "facebook-jssdk"
  return  if d.getElementById(id)
  js = d.createElement("script")
  js.id = id
  js.async = true
  js.src = "//connect.facebook.net/en_US/all.js"
  d.getElementsByTagName("head")[0].appendChild js
) document
$ ->
  $("a").click (e) ->
    e.preventDefault()
    FB.login ((response) ->
      $.get "/auth/facebook/callback"  if response.authResponse
    ),
      scope: "#{SCOPE}"

1 Ответ

2 голосов
/ 12 марта 2013

Q1.Я бы не рекомендовал отображать части встроенного javascript внутри другого javascript, но если вы отображаете шаблоны, вам следует хранить их в app / assets / templates

Q2.Если вы используете Rails Asset Pipeline, вы можете добавить дополнительные расширения, чтобы поместить файл через дополнительные парсеры.Поэтому добавьте расширение ERB для рендеринга переменных ruby ​​в JS.например.

#my_file.js.coffee.erb
window.fbAsyncInit = ->
  FB.init
    appId: "<%= ENV['APP_ID'] %>"
    status: true
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...