Встроенный исполняемый файл JS от Rails - PullRequest
0 голосов
/ 23 января 2020

Как сделать встроенный исполняемый файл JS для других сайтов?

У меня есть приложение Rails (порт 3000), в котором:

rout.rb

get '/embed/:tag_name',to: 'embed_widget#tag_name'

embed_widget_controller.rb

class EmbedWidgetController < ApplicationController
  layout false, only: [:tag_name]
  protect_from_forgery except: [:tag_name]
  before_action :set_access_headers, only: [:tag_name]

  def tag_name
    @tag_name = params[:tag_name]
  end

  private

  def set_access_headers
    headers['Content-Type'] = 'text/javascript; charset=utf8'
    headers['Access-Control-Allow-Origin'] = '*'
  end
end

tag_name. html .haml

:plain
  var tag = "#{@tag_name}"
  console.log('Hello from embedded JS. Tag name =', tag)

Я вставляю код для подключения JS на другом сайте (порт 3001):

<div class='embed'>
  <script src='http://localhost:3000/embed/exampletagname' type='text/javascript'></script>
</div>

Но ничего не происходит.

Как получить вывод на консоль на другом сайте?

1 Ответ

1 голос
/ 23 января 2020

Ваш код обслуживает тип контента text/html, но для сценариев он должен быть text/javascript

get '/embed/:tag_name',to: 'embed_widget#tag_name', defaults: {format: :js}

и переименовать ваше представление в tag_name.js.erb:

var tag = "<%= @tag_name %>";
console.log('Hello from embedded JS. Tag name =', tag)

встраивать как ранее или через http://localhost:3000/embed/exampletagname.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...