我有一个视图文件夹,其中包含许多js.coffee文件,这些文件在执行各种控制器操作时被调用。它是在提交远程表单时调用的,并由respond_with行在控制器中触发。我以创建方法为例。重要的是要注意所有这些在开发模式下都能完美地工作。在生产中,我已经确保我已经预编译了我的资产,运行了bundle install --demployment等。
users_controller.rb
def create
@user = User.new(params[:user])
if @user.save
respond_with @user, :location => users_url #This line is throwing the error in production
end
end
保存记录后应执行以下Jquery,并在开发模式下完美执行。请务必注意,记录已创建,但以下文件永远不会执行
create.js.coffee
$('#errors').empty()
$('#errors').show()
<% if @user.errors.any? %>
$('<%= escape_javascript(render :partial => "errors", :locals => {:target => @user })%>')
.appendTo('#errors')
<% else %>
$('<%= escape_javascript(render(:partial => @user))%>')
.appendTo('#user_table')
.hide()
.fadeIn(200)
$('#errors').hide()
$('#new_user')[0].reset()
$('#users_count').html '<%= users_count %>'
<% end %>
$('#error_close').click ->
$('#errors').fadeOut()
这是生产中抛出的错误。
ActionView::MissingTemplate (Missing template users/create, application/create with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder]}. Searched in:
* "/home/ctilley/Development/RatatouilleCatering/app/views"
* "/home/ctilley/Development/RatatouilleCatering/vendor/bundle/ruby/1.9.1/gems/wash_out-0.3.1/app/views"
* "/home/ctilley/Development/RatatouilleCatering/vendor/bundle/ruby/1.9.1/gems/ckeditor-3.7.0.rc2/app/views"
):
app/controllers/users_controller.rb:19:in `create'
答案 0 :(得分:0)
我终于明白了。将coffee-rails和uglifier从:assets组中取出来解决问题。