Я следую railscasts для jcrop, но задавался вопросом, как мне получить динамическое имя модели в jquery, если у меня есть что-то вроде этого:
update: (coords) =>
$('#user_crop_x').val(coords.x)
$('#user_crop_y').val(coords.y)
$('#user_crop_w').val(coords.w)
$('#user_crop_h').val(coords.h)
@updatePreview(coords)
#user
основан на модели пользователя, но он был жестко закодирован, но если у меня есть другие модели с обрезкой, как вы делаете id динамическим на основе модели?
благодаря
andrewliu. Я не отношусь к динамической модели. Я говорю о том, как использовать другое имя модели для использования jcrop.
update: (coords) =>
$('#user_crop_x').val(coords.x)
$('#user_crop_y').val(coords.y)
$('#user_crop_w').val(coords.w)
$('#user_crop_h').val(coords.h)
@updatePreview(coords)
#user_crop_x
происходит из этой формы:
= form_for MODEL, url: CROP_URL, method: :patch, html:{id: "jcrop_form"} do |f|
- %w[x y w h].each do |attribute|
= f.hidden_field "crop_#{attribute}"
.form-actions
= f.submit t(".crop"), class: 'btn btn-primary'
Он по умолчанию генерирует много id в скрытом поле в rails form_for
. Также как #user_crop_x
и #user_crop_y
и так далее.
Идентификатор по умолчанию - это определенное правило, которое является ##{model_name}_{attribute_name}
, поэтому, если у вас есть dynamic model
и лучшим способом является имя класса в скрытом поле. Пример:
= f.hidden_field "crop_#{attribute}", class: "crop_class_#{attribute}"
И установите код jQuery следующим образом:
update: (coords) =>
$('.crop_class_x').val(coords.x)
$('.crop_class_y').val(coords.y)
$('.crop_class_w').val(coords.w)
$('.crop_class_h').val(coords.h)
@updatePreview(coords)
Если ваш coffeescript отображается динамически (т.е. В файле view.js.erb), вы можете просто использовать общую переменную следующим образом:
users_controller: назначить общую переменную, которую вы можете использовать в своем представлении, например:
@user_name = User.find(1).name
Посмотреть
update: (coords) =>
$('#<%= @user_name %>_crop_x').val(coords.x)
$('#<%= @user_name %>_crop_y').val(coords.y)
$('#<%= @user_name %>_crop_w').val(coords.w)
$('#<%= @user_name %>_crop_h').val(coords.h)
@updatePreview(coords)
app/assets/javascripts
есть ли метод, который я могу создать или помощник, а затем вызвать его в файл js?
NewModel
, он сгенерируетnew_model_crop_x
и т. Д.