0

I'm new to rails and what I'm trying to do is the following:

I'm creating a store and unstore button to save and 'un-save' the event respectively. I used my event attributes and current user to find that stored event. By using ajax and remote functionality of rails I will able to change the behavior of the button from store to unstore or vise versa.

In my _feed.html.erb.

<% if @feed_items.any? %>
  <ul>
    <%= render partial: 'shared/feed_item', collection: @feed_items %>
  </ul>
<% end %>

Each @feed_items contains set of data (title, category, etc).

In my _feed_item.html.erb.

<li id="<%= feed_item.id %>" class="item">
    ...
    <div class="small-3 text-center columns">        
      <%= render 'shared/store_form', event: feed_item %>
    </div>
    ...
</li>

Event symbol sends that feed_item to the store_form.

In my _store_form.html.erb.

<div id="store_form_<%= event.id %>">
    <% if event.stored?(current_user) %>
        <%= render 'shared/unstore', event: event %>
    <% else %>
        <%= render 'shared/store', event: event %>
    <% end %>
</div>

I pass again a feed_item into partial.

_store.html.erb

<%= form_for(event.storages.build(saver_id: current_user.id, 
                        organizer_id: event.user_id),
                        remote: true) do |f| %>
    <div>
        <%= f.hidden_field :organizer_id %>
        <%= f.hidden_field :saved_id, value: event.id %>
    </div>
  <%= f.submit "store" %>
<% end %>

_unstore.html.erb

<%= form_for(event.storages.find_by(saver_id: current_user.id,
                         organizer_id: event.user_id) ,
             html: { method: :delete },
             remote: true) do |f| %>
  <%= f.submit 'unstore' %>
<% end %>

create.js.erb

$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")

destroy.js.erb

$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")

And I'm getting these errors when clicking store/unstore event.

ActionView::Template::Error (undefined local variable or method `event' for #<#<Class:0x00000004d69be8>:0x00000004d68d10>):
    1: $("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")


ActionView::Template::Error (undefined local variable or method `event' for #<#<Class:0x00000004d69be8>:0x00000004fdc6a0>):
    1: $("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")

My question is, how can I pass that specific "event" data into the partial. I can't used @feed_item onto the create and destroy js because feed_item have the set of events. Is there any better approach to handle this?

1 Answer 1

0

In your action create and delete in the controller you should instantiate your variable event: change event by @event and change your js to:

$("#store_form").html("<%= escape_javascript(render 'shared/unstore') %>

because you don´t need add instantiate vars to render calls, rails is doing for you

Sign up to request clarification or add additional context in comments.

1 Comment

I'll try this one. I'll reply if it still not working. But my partial on store and unstore needs to display each of event status coming from set of events.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.