سؤال

Context: I pulled the most recent code from the repository and tried to make sure that the changes I was about to push up were going to work with that version of the code. This is a Ruby on Rails application. Also worth noting is the fact that when running the main application that I pulled from on the web, this error does not show up. But if I run my branch or the main branch cloned onto my environment, the error always shows up for every url I try. So it is on my end.

Problem: As soon as I go to localhost:3000, I get the following error:

NoMethodError in HomeController#index
undefined method `-@' for #<ActionDispatch::Response:0x64fd460>

What I've Tried: I have asked my question on the #rubyonrails IRC channel and nobody was able to determine what was going on through the Full Trace (I haven't posted it here because I wasn't sure what was the best way to do that on here; it didn't look very good in the code block or block quote). I have looked at my HomeController's index method, which is defined as such:

    def index
      @groups = @current_user.groups
      @things = Thing.where(:group_id => @groups.map{|e|e.id})
    end

I have also Googled around and haven't found what I need to fix the problem.

What I've Learned So Far: -@ is an operator. Some people may receive a similar error in assuming that Ruby has the shortcut to

    variable = variable + 1

that a lot of other languages have:

    variable++

Here is an example of that case: Undefined method `+@' for false:FalseClass (NoMethodError) ruby

Question: Does anyone have any further suggestions on how to find the issue here? Also, if I could easily put the Full Trace on here, formatted in an aesthetically pleasing manner, would someone tell me how? I'm at a loss with this one :(

Update (2/8/2013): It seems that the issue does not necessarily reside in the HomeController nor home/index.html.erb View. I have attempted to access ANY url with a valid action and the same error occurs with "NoMethodError in..." changing to the corresponding [...]Controller#index.

Update (2/9/2013): Since this error happens no matter what url I try to navigate to, I decided to look in the routes.rb file in the config folder. I ran my server through rubymine instead of the command line this time, which made it a little easier to read for me. I started looking through all the spit out and I noticed an interested line that consisted of:

["private-key looking thing"] [127.0.0.1] Started GET "/" for 127.0.0.1 at 2013-02-09 18:20:52 -0700

It seems like there is a syntactical error in routes.rb (that's my best guess at this point). This does not explain why this only is an issue on my local environment with the same code sets, but what else do I have to go off of?

Does anyone have any suggested things to be on the look out for while I sift through this file? Not really sure what to be looking for as far as errors are concerned. Rubymines inspection stuff converted all my double quotes to single quotes and doesn't really have anything else to complain about.

Thanks in advance, Jake Smith

هل كانت مفيدة؟

المحلول 2

I have fixed the issue!

What fixed it:

  1. Go to the directory where your gems are (for me that was C:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1)
  2. Delete all gems except for bundler
  3. Make sure you delete the gems from the /cache/, /gems/, and /specifications/ folders (I just deleted them from the /gems/ folder at first and bundle install indicated that it could still find the gems)
  4. Run bundle install

Further Inquiry:

Does anybody have any idea why this worked? I don't know if at this point I can narrow down which gem was causing the issue because the app is working now (I can visit all the urls with corresponding views). If the issue comes up again, I will delete gems one by one to nail down which one was at least causing the issue for me. But if anyone has any insight on this, a more detailed answer would be greatly appreciated by many more people than just me, I think. Thanks to all who helped thus far!

نصائح أخرى

I am guessing it might as well be an syntactical error in the corresponding view page Home/index.html.haml .. I am suspecting there is unintended '-' in front of variable call. I tried to simulate a similar scenario in my rails platform and see following page on browser

undefined method `-@' for false:FalseClass

Correct lines of code

%h1 All Movies
= "filtervalue=#{@isFilterOld}"
= "Sortvalue=#{@isSortOld}"

Edited to simulate the error (observe the - in front of isFilterOld variable)

   %h1 All Movies
    = "filtervalue=#{-@isFilterOld}"
    = "Sortvalue=#{@isSortOld}"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top