【问题标题】:"Template is missing" error using jQuery with Rails使用带有 Rails 的 jQuery 时出现“模板丢失”错误
【发布时间】:2011-10-24 02:48:52
【问题描述】:

我正在尝试使用编辑帐户页面中的“添加用户头像”链接将头像添加到用户个人资料。

这是 avatars_controller.rb:

def new
  @avatar = Avatar.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @avatar }
    format.js
  end
end

def create
  @avatar = @user.avatars.create(params[:avatar])
  respond_to do |format|
    if @avatar.save
      format.html { redirect_to(edit_account_path, :notice => 'Avatar was successfully created.') }
      format.xml  { render :xml => @avatar, :status => :created, :location => @avatar }
      format.js
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @avatar.errors, :status => :unprocessable_entity }
      format.js
    end
  end
 end

这是我的链接:

<%= link_to "add a new avatar", new_avatar_path%>

路线:

resources :avatars
resources :users do
  resources :avatars
end

views/avatars/create.js.erb:

alert('whoaaa!!!')

我正在使用 rails 3.0.9 并获得:

模板丢失

缺少模板头像/新的 {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} 在视图路径中 "/home/ugur/rails_projects/deneme/app/views", "/home/ugur/rails_projects/deneme/app/views", "/home/ugur/rails_projects/deneme/flag_promotions/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_sample-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_promo-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_dash-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_api-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_auth-0.60.1/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/devise-1.3.3/app/views", "/home/ugur/.rvm/gems/ruby-1.9.2-p180/gems/spree_core-0.60.1/app/views"

我快要疯了。请帮忙。

【问题讨论】:

  • 你有“编辑”方法吗?您链接到 edit_avatar_path。不创建头像路径

标签: jquery ruby-on-rails


【解决方案1】:

您正在调用 edit 操作并希望呈现 create 模板。这就是重点。

鉴于您的输出,我猜edit 操作正在渲染不存在的new.js.erb 模板。


变化:

<%= link_to "add a new avatar", new_avatar_path%>

与:

<%= link_to "add a new avatar", new_avatar_path, :remote => true %>

实际发出 ajax 请求。


在这里查看我的提交:https://github.com/apneadiving/avatars/commit/f88ebf3f65e2ad88176cd28f09fd9dc91448cb98

它适用于网址/avatars

【讨论】:

  • @macfan_:有什么意见吗?如果合适,别忘了接受答案
  • 对不起,我发布了错误的链接。它已得到纠正。请看一看。
  • 好的,但同样的结论:你调用了新的动作,所以部分应该是 new.js.erb
  • 我已经做到了。我也用了 avatars/new.js.erb 但没用。
  • 我有 new.js.erb 和 create.js.erb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多