首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails jcrop +回形针

rails jcrop +回形针
EN

Stack Overflow用户
提问于 2009-12-17 00:32:21
回答 1查看 2.6K关注 0票数 1

我已经成功地实现了jcrop和回形针,通过转到另一个页面(即crop.html.erb)来裁剪图像。但我希望能够在当前页面上进行所有裁剪,在弹出的div /对话框中上传图像。所以我需要在点击时将crop.html.erb页面加载到弹出的div中。以下是裁剪页面上的代码

代码语言:javascript
复制
    <% content_for :javascript do %>
    <%= stylesheet_link_tag "jquery.Jcrop" %>
    <%= javascript_include_tag "jquery.Jcrop.min" %>

<% end %>

<script type="text/javascript" charset="utf-8">

$(function() {
  $('#cropbox').Jcrop({
    onChange: update_crop,
    onSelect: update_crop
  });
});


function update_crop(coords) {
  var rx = 100/coords.w;
  var ry = 100/coords.h;
  $('#preview').css({
    width: Math.round(rx * <%= @photo.photo_geometry(:biggest).width %>) + 'px',
    height: Math.round(ry * <%= @photo.photo_geometry(:biggest).height %>) + 'px',
    marginLeft: '-' + Math.round(rx * coords.x) + 'px',
    marginTop: '-' + Math.round(ry * coords.y) + 'px'
  });
  var ratio = <%= @photo.photo_geometry(:original).width %> / <%= @photo.photo_geometry(:biggest).width %>;
  $("#crop_x").val(Math.round(coords.x * ratio));
  $("#crop_y").val(Math.round(coords.y * ratio));
  $("#crop_w").val(Math.round(coords.w * ratio));
  $("#crop_h").val(Math.round(coords.h * ratio));
}

</script>


 <%= image_tag @photo.photo.url(:biggest), :id => "cropbox" %>

 <h4>Preview:</h4>
    <div style="width:100px; height:100px; overflow:hidden">
      <%= image_tag @photo.photo.url(:biggest), :id => "preview" %>
    </div>


 <% form_for @photo do |f| %>
  <% for attribute in [:crop_x, :crop_y, :crop_w, :crop_h] %>
    <%= f.hidden_field attribute, :id => attribute %>
  <% end %>
  <p><%= f.submit "Crop" %></p>
<% end %>

我可以把它附加到div或类似的东西上吗,或者我走错了?

顺便说一句,我不是简单地一次上传一张图片,所以我不能让它转到一个裁剪页面,然后再回来。我上传所有的文件一次使用上传在一个弹出式div在页面上,然后希望能够点击裁剪链接旁边的图像。

EN

回答 1

Stack Overflow用户

发布于 2010-02-18 06:41:00

您需要进行类似如下的更改:

在photos_controller.rb中

代码语言:javascript
复制
def create
  @photo = Photo.new(params[:photo])
  if @photo.save
    flash[:notice] = "Successfully created photo."
    redirect_to @photo
  end
end

def update
  @photo = Photo.find(params[:id])
  if @photo.update_attributes(params[:photo])
      flash[:notice] = "Successfully updated photo."
      redirect_to @photo
  end
end

def crop
  @photo = Photo.find(params[:id])
end

在routes.rb中

代码语言:javascript
复制
map.resources :photos, :member => {:crop => :get}

在照片/show.html.erb中

代码语言:javascript
复制
<%= link_to "Crop", crop_photo_path(@photo) %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档