dan
dan

Reputation: 1080

Rendering a partial with ajax - missing view

I have commendations/_create.html.erb which includes in a form -

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

and in commendations_controller.rb

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

but I'm getting the following error in the server log -

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'

I can't see where I'm going wrong - the remote: true should trigger format.js which in turn should reload the partial, no?

In routes.rb I have

 resources :commendations, only: [:create]

Upvotes: 1

Views: 397

Answers (1)

NM Pennypacker
NM Pennypacker

Reputation: 6952

You need a file called create.js within app/views/commendations/

And in create.js do:

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

Upvotes: 2

Related Questions