Satynos-o4GsF6Y0fuwAvxtiuMwx3w@public.gmane.org
2008-Jun-24 13:46 UTC
Problem with Ajax response with the use of action.js.rjs file
I am trying to get a grasp of Ajax response in ROR. Following the examples in the ROR API and the books Simply Rails 2 from Sitepoint, following are the code snippets from votes_controller and create.js.rjs: (from app/controllers/votes_controller.rb) def create @story = Story.find(params[:story_id]) @story.votes.create(:user => @current_user) respond_to do |format| format.html { redirect_to @story } format.js end end (from app/views/votes/create.js.rjs) page.replace_html ''vote_score'', "Score: #{@story.reload.votes.size}" page[:vote_score].visual_effect :highlight Following is the code from (app/views/stories/show.html.erb) that triggers the create action in the votes controller: <div id="vote_form"> <% form_remote_for [ @story, Vote.new ] do |f| %> <%= f.submit ''shove it'' %> <% end %> </div> When I hit the above shove it button, I am getting the following error (from the firebug console window) <h1>NameError in Votes#create</h1> <p>Showing <i>votes/create.js.rjs</i> where line <b>#1</b> raised: <pre><code>undefined local variable or method `page'' for #<ActionView::Base:0x46caf94></code></pre> </p> Instead when I change the create def to include the inline JavaScript statements as follows, its working: def create @story = Story.find(params[:story_id]) @story.votes.create(:user => @current_user) respond_to do |format| format.html {redirect_to @story} format.js { render :update do |page| page.replace_html ''vote_score'', "Score: #{@story.reload.votes.size}" page[:vote_score].visual_effect :highlight } end end Looks like the JavascriptGenerator is generating the necessary JavaScript if the statements are inline instead of in a separate view file. Is is behavior expected. PS: I am working on WinXP using InstantRails with Rails 2.1 Thanks in advance. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---