Как я могу загрузить встроенный файл ruby ​​javascript при загрузке страницы? - PullRequest
2 голосов
/ 02 января 2012

Итак, я уверен, что вы все знакомы, в Rails могут быть действия, вызывающие файлы html.erb.Вы также можете настроить действия для удаленной визуализации, которые вызывают встроенные файлы ruby ​​(например, отправка формы «post» контроллеру «posts», ее удаленная обработка и вызов файла js.erb для обновления элементов на странице).

Я хочу знать, как запустить файл js.erb, когда я запускаю действие, которое загружает шаблон (файл html.erb).Чтобы объяснить, подумайте, хочу ли я запустить страницу User Show:

 class UsersController < ApplicationController
   def show
     @user = User.find(params[:id])
   end
 end

При связывании с user_path(User.find(1)) загрузится show.html.erb, и все кажется великолепным.

Но что, если я хочунажать на ссылку user_path(User.find(1)) и загрузить show.html.erb, одновременно загружая show.js.erb?Если (и я надеюсь, что это так) это возможно, как я могу адаптировать определение show для загрузки также show.html.erb и custom_js_file_name.js.erb?

FYI: я использую Rails 3.0.9 и 3.1.3в двух разных приложениях и предположим, что я бы поместил show.js.erb или любые другие в папку «Пользователи» ( views / users /...)

Ответы [ 2 ]

1 голос
/ 03 января 2012

По умолчанию

def show
  @user = User.find(params[:id])
end

будет отображать только представление show, если оно было запрошено через HTML, JSON, JS и т. Д.

Я думаю, что вы описываетелучше подходит для метода render в Rails.Обычно контроллеры используют различные методы format.(:format) в блоках respond для ответа на вызов контроллера в зависимости от типа запроса (JSON, HTML, JS и т. Д.).

В вашем show.html.erbfile:

<%= render "users/show.js" %>

Это позволяет вам отображать любой произвольный файл в другом из ваших представлений.Это также позволяет вам разделить ваши файлы большого вида на более мелкие (многократно используемые) части, называемые частями ( примечание: все имена именуются символом _ в начале и вызываются с помощью <%= render :partial => "users/my_partial" %>, который будетсделать файл _my_partial.some_format.erb)

0 голосов
/ 02 января 2012

Попробуйте с помощью действия show отобразить файл show.js.erb при запросе в формате js. Это должно заставить Rails визуализировать динамический шаблон; Теперь ссылка на него из оригинального show.html.erb с тегом ссылки JavaScript.

В show.html.erb:

<script type="text/javascript" src="<%= show_users_path(@user.id) -%>.js"></script>

Я не пробовал этого, и рендеринг show.js.erb может поставить дополнительное форматирование, которое было бы проблемой.

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