我正在关注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动态化?
由于
答案 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)