动态id名称基于jquery中的模型

时间:2013-11-07 05:41:58

标签: jquery ruby-on-rails ruby coffeescript jcrop

我正在关注railscasts for 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动态化?

由于

2 个答案:

答案 0 :(得分:1)

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'

默认情况下会在rails form_for的hidden_​​field中生成许多ID。就像#user_crop_x#user_crop_y等等。

默认ID是##{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)

答案 1 :(得分:0)

如果您的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)