Javascript 在Rails中使用Ajax在分区上传递特定数据
我是rails的新手,我尝试做以下几点: 我正在创建一个存储和取消存储按钮,分别保存和取消保存事件。我使用我的事件属性和当前用户来查找存储的事件。通过使用ajax和rails的远程功能,我将能够将按钮的行为从存储更改为取消存储,反之亦然 在my\u feed.html.erb中Javascript 在Rails中使用Ajax在分区上传递特定数据,javascript,ruby-on-rails,ruby,ajax,Javascript,Ruby On Rails,Ruby,Ajax,我是rails的新手,我尝试做以下几点: 我正在创建一个存储和取消存储按钮,分别保存和取消保存事件。我使用我的事件属性和当前用户来查找存储的事件。通过使用ajax和rails的远程功能,我将能够将按钮的行为从存储更改为取消存储,反之亦然 在my\u feed.html.erb中 <% if @feed_items.any? %> <ul> <%= render partial: 'shared/feed_item', collection: @feed_
<% if @feed_items.any? %>
<ul>
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ul>
<% end %>
<li id="<%= feed_item.id %>" class="item">
...
<div class="small-3 text-center columns">
<%= render 'shared/store_form', event: feed_item %>
</div>
...
</li>
<div id="store_form_<%= event.id %>">
<% if event.stored?(current_user) %>
<%= render 'shared/unstore', event: event %>
<% else %>
<%= render 'shared/store', event: event %>
<% end %>
</div>
每个@feed_项都包含一组数据(标题、类别等)
在my\u feed\u item.html.erb中
<% if @feed_items.any? %>
<ul>
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ul>
<% end %>
<li id="<%= feed_item.id %>" class="item">
...
<div class="small-3 text-center columns">
<%= render 'shared/store_form', event: feed_item %>
</div>
...
</li>
<div id="store_form_<%= event.id %>">
<% if event.stored?(current_user) %>
<%= render 'shared/unstore', event: event %>
<% else %>
<%= render 'shared/store', event: event %>
<% end %>
</div>
...
...
事件符号将该提要项发送到存储表单
在my\u store\u form.html.erb中
<% if @feed_items.any? %>
<ul>
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ul>
<% end %>
<li id="<%= feed_item.id %>" class="item">
...
<div class="small-3 text-center columns">
<%= render 'shared/store_form', event: feed_item %>
</div>
...
</li>
<div id="store_form_<%= event.id %>">
<% if event.stored?(current_user) %>
<%= render 'shared/unstore', event: event %>
<% else %>
<%= render 'shared/store', event: event %>
<% end %>
</div>
我再次将feed_项传递到partial
\u 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 %>
<%= 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 %>
$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")
$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")
\u unstore.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 %>
<%= 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 %>
$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")
$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")
create.js.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 %>
<%= 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 %>
$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")
$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")
$(“#存储表单”).html(“”)
destroy.js.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 %>
<%= 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 %>
$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event )%>")
$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>")
$(“#存储表单”).html(“”)
我在单击“存储/取消存储”事件时遇到这些错误
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 )%>")
ActionView::Template::Error(未定义的局部变量或#的“event”方法):
1:$(“#存储表单”).html(“”)
ActionView::Template::Error(未定义的局部变量或#的“事件”方法):
1:$(“#存储表单”).html(“”)
我的问题是,我如何将特定的“事件”数据传递到partial。我不能在create和destroy js中使用@feed_item,因为feed_item有一组事件。有没有更好的方法来处理这个问题 在控制器的创建和删除操作中,您应该实例化变量event:change event by@event,并将js更改为:
$("#store_form").html("<%= escape_javascript(render 'shared/unstore') %>
$(“#存储表单”).html(“
因为您不需要添加实例化变量来呈现调用,rails正在为您做这件事我将尝试这件事。如果它仍然不起作用,我会回答。但是我的部分on store和unstore需要显示来自事件集的每个事件状态。