0

我正在关注jcrop 的 railscasts但想知道如果我有这样的东西,我如何在 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 动态?

谢谢

4

2 回答 2

1

安德鲁柳。我不知道动态模型是什么意思。我讲了如何使用另一个模型名称来使用 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'

它会默认在 rails 的 hidden_​​field 中生成许多 id form_for。就像#user_crop_x等等#user_crop_y

默认 id 是一个特定的规则 what is ##{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)
于 2013-11-07T06:33:52.610 回答
0

如果您的咖啡脚本是动态呈现的(即在 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)
于 2013-11-07T06:26:41.007 回答