我使用Railscasts 182裁剪上传的图像。根据视频,我实现了这个:
我正在上传个人资料页面的图像。这是我的配置文件控制器:
def edit
@profile = current_user.profile
if @profile.photo.nil?
redirect_to current_user.profile
else
render :action => "crop"
end
end
def update
@profile = current_user.profile
if @profile.update_attributes(params[:profile])
if @profile.photo.nil?
redirect_to current_user.profile
else
render :action => "crop"
end
else
render :edit
end
end
根据视频,我的crop.html.erb
文件是:
<% "Crop avatar" %>
<% content_for(:head) do %>
<%= stylesheet_link_tag "jquery.Jcrop" %>
<%= javascript_include_tag "jquery.Jcrop.min" %>
<script type="text/javascript">
$(function(){
$("#cropbox").jCrop();
});
</script>
<% end %>
<%= image_tag @profile.photo.avatar.url(:big), :id => "cropbox" %>
我在application.html.erb
中添加了这些:
<%= javascript_include_tag "jquery.min" %>
<%= yield(:head) %>
当我提交图像时,它会显示普通图像。它不显示选择光标,因此无法在图像上选择视频中显示的区域。
我猜Jcrop不工作了。有人能告诉我问题出在哪里吗?
通过查看源代码或在firebug中运行$("#cropbox").jCrop();
,确保jquery.Jcrop.min
被包含在结果HTML文件中。
如果不是,那么尝试将//= require jquery.Jcrop.min
行添加到application.js
中,然后预编译您的资产。
如果它仍然没有被包括在内,那么一个绝望的解决方案是删除content_for head(:head)
行,由于某种原因未能将您的js代码附加到头部(这就是我最终做的)。