Как сделать код рубина внутри Coffescript .js.coffee

0

Я пытаюсь сделать частичным, когда нажимаю на выбранный список.

Почему это делает частичный файл без проблем:

users/index.html:

 <%= select_tag :priority, options_for_select([['low'],
                                               ['normal'],
                                               ['high'],
                                               ['critical']]),             
                data: {form: escape_javascript(render(:partial => "my_partial_file"))}

 %>

<div id="div_teste">
    CHANGE IT!
</div>

активы /javascript/user.js:

$ ->
    $('#priority').change ->
        $('#div_test').html($('#priority').data('form'))

Но если я попробую этот код:

$ ->
    $('#priority').change ->
        my_data = "<%= j render my_partial_file %>"
        $('#div_test').html(my_data)

Он просто отображает чистый текст, а не частичный файл:

<% = j render my_partial_file%>

Теги:
coffeescript

1 ответ

2

Ваша индексная страница отображается с каждым запросом страницы. Ваши активы предоставляются один раз, скорее всего, раньше времени. Ввод данных запроса в актив не имеет смысла.

Если вы хотите подавать данные из вашего приложения в предварительно обработанный кофе /javascript, используйте атрибуты данных.

Здесь RailsCast по теме.

  • 0
    Хотя я согласен с Ником, если вам когда-нибудь понадобится использовать ERB в файле JS, вы можете добавить расширение erb, тогда вы можете использовать в нем теги ERB. Например, ваш user.js будет user.js.coffee.erb См. Guides.rubyonrails.org/asset_pipeline.html 2.3.3 JavaScript / CoffeeScript и ERB
  • 0
    Я никогда не делал этого, я предполагаю, что это все еще будет ограничивать использование ERB методами, вызываемыми без какого-либо запроса или состояния, верно? Как URL-помощники и прочее? Или можно активировать конвейер активов при каждом запросе? Кажется, это была бы очень плохая идея.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню