I am having a weird issue where my rails application seemingly isn't reading the local variable passed to the partial, but ***only*** inside of `form_for`.

I have a set up a button where a user can bookmark an object, let's call it `zoo`.

The code looks like this:

Zoo Listing View:

```
<li><%= render 'directory/bookmarks', zoo: zoo %></i></li>

```

Then the directory/bookmarks partial:

```
<% if user_signed_in? %>
   <% if current_user.has_zoo_bookmarked_already? %>
      <%= form_for(current_user.bookmarks.find_by_zoo_id(zoo.id), html: { method: :delete }, remote: true) do |f| %>
         <%= button_tag do %>
            <button class="btn btn-lg btn-block btn-primary">remove bookmark
         <% end %>
      <% end %> 
<% else %>
  <%= form_for(current_user.bookmarks.build(zoo_id: zoo.id)) do |f| %>
     <%= f.hidden_field :zoo_id, value: zoo.id  %>
     <%= button_tag do %>
            <button class="btn btn-lg btn-block btn-primary">bookmark
     <% end %>
 <% end %>
<% end %>
<% else %>
<% end %>   

```

Anyway, the problem is the `zoo.id` on the 3rd line is not being evaluated. I get this error.

**undefined method `model\_name' for NilClass:Class**

The weird part is that locals are being read on the page.

If I place this code snippet `<%= zoo.id %>` anywhere on the page, I get the id. Then, the `find_by_zoo_id` is being evaluated also...if I put `255` a hardcoded number, it works. Or if I set it to a variable, `@id = 255` and then pass in the `@id`, it works. 

The zoo.id only does not work inside of the form\_for for some reason. If I set it to an instance variable on the page, `@id = zoo.id`, that doesn't work either. 

Any ideas? I'm sure it is something minor.

EDITED:

The relationship is has\_many :through. Forgot to mention, I use this code for a different association in the same application and it works fine.