【问题标题】:Rendering a partial with ajax - missing view使用 ajax 渲染部分 - 缺少视图
【发布时间】:2015-01-29 15:13:25
【问题描述】:

我有表扬/_create.html.erb 包含在一个表单中 -

<%= form_for(current_user.commendations.new(...), remote: true) do |f| %>
  <%=...

在commonations_controller.rb中

def create
...
  respond_to do |format|
    format.html { redirect_to :back }
    format.js
  end
end

但我在服务器日志中收到以下错误 -

Completed 500 Internal Server Error in 7ms

ActionView::MissingTemplate (Missing template commendations/create, application/create with {:locale=>[:en], :formats=>[:js, :html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
  * "/Users/dan/Documents/ROR/fic/app/views"
  * "/Users/dan/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/devise-3.4.1/app/views"):
  app/controllers/commendations_controller.rb:9:in `create'

我看不出哪里出错了 - remote: true 应该触发 format.js 反过来应该重新加载部分,不是吗?

在 routes.rb 我有

 resources :commendations, only: [:create]

【问题讨论】:

  • 1. commendations/create 放在哪里? 2.请发touch Users/dan/Documents/ROR/fic/app/views/application/_create.html.erb后重试

标签: ruby-on-rails ajax partials


【解决方案1】:

您需要在 app/views/commendations/ 中创建一个名为 create.js 的文件

在 create.js 中做:

$("#your_div").html( "<%= j render( :partial => 'commendations/your_partial') %>" );

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 2011-06-18
    • 2014-09-18
    • 2011-11-17
    • 1970-01-01
    • 2013-10-08
    • 2010-10-19
    • 2016-01-03
    相关资源
    最近更新 更多