Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails: accessing an instance variable in a js.erb file

I am trying to access an instance variable from a js.erb file.

#controller
def get_person
  @person = Person.find(1)

  respond_to do |format|
   format.js{}
  end
end

#get_person.js.erb
alert('<%= @person.last_name %>')

When I browse to [controller_name_here]/get_person.js ... I get a nil object error on @person. (I know Person.find(1) returns an object)

Note: I am actually having trouble rendering a partial in my js.erb file and am trying to identify the cause.

like image 918
Lee Avatar asked Jun 03 '09 19:06

Lee


Video Answer


1 Answers

The following works for me:

In /app/controllers/foo_controller.rb:
class FooController < ApplicationController
  def get_person
    @person = Person.find(1)
    respond_to do |format|
      format.js
    end
  end
end
In /app/views/foo/get_person.js.erb:
<%= render :partial => '/foo/some_partial', :locals => { :person => @person } %>
In /app/views/foo/_some_partial.js.erb:
person = {
  last_name: '<%= person.last_name -%>'
}
like image 151
James A. Rosen Avatar answered Oct 05 '22 23:10

James A. Rosen