سؤال

انا اتبع 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 يعتمد على نموذج المستخدم ، ولكن تم ترميزه بشدة ، ولكن إذا كان لدي نماذج أخرى مع زراعة المحاصيل ، فكيف تجعل المعرف ديناميكيًا استنادًا إلى النموذج؟

شكرًا

هل كانت مفيدة؟

المحلول

أندروليو. أنا لا أفعل ماذا عن النموذج الديناميكي يعني. أتحدث عن كيفية استخدام اسم طراز آخر لاستخدام 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'

سيتم إنشاء العديد من المعرفات الافتراضية في Hidden_field في Rails form_for. تماما مثل #user_crop_x و #user_crop_y وهلم جرا.

المعرف الافتراضي هو قاعدة معينة ما هو ##{model_name}_{attribute_name}, ، لذلك إذا كان لديك dynamic model وأفضل طريقة هي تعيين اسم الفصل في Hidden_Field. مثال:

= 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)

نصائح أخرى

إذا تم تقديم Coachescript الخاص بك ديناميكيًا (أي في ملف View.js.erb) ، فيمكنك فقط استخدام متغير مشترك مثل ذلك:

user_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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top