gpt4 book ai didi

javascript - 渲染js Action 并传递本地

转载 作者:行者123 更新时间:2023-12-03 12:04:19 26 4
gpt4 key购买 nike

我有一个部分表单,用作关注/取消关注按钮。当我循环浏览商店列表时,我有一个按钮可以关注/取消关注每个商店。

表单提交时使用 :remote => true我想通过渲染包含该特定商店按钮的更改状态的 div 来做出响应。

def follow_from_index
@store = Store.find(params[:store_id])
current_user.vote_for(@store)
render action: 'toggle_index'
end

我现在将每个包含的 div 的 id 设置为商店的 AR Id:id="<%= store.id %>" .

我希望我能为 toggle_index 做这样的事情:

$("<%= store.id %>").html("<%= escape_javascript render('favorite_index') %>");

这样我就可以通过 toggle_index操作来自 Controller 的相关存储的局部变量。我该如何实现这个目标?或者,是否有更直接的途径达到此目的?

更新

这是我的部分内容:

<% if current_user.voted_for?(store) %>
<%= link_to image_tag("followactive.png"),
{ :controller => :stores,
:action => 'unfollow_from_index', :store_id => store.id},
{ :method => 'delete', :remote => true }%>
<% else %>
<%= link_to image_tag("follow.png"),
{ :controller => :stores,
:action => 'follow_from_index', :store_id => store.id},
{ :method => 'post', :remote => true} %>
<% end %>

调用渲染部分:

<%= render partial: 'stores/favorite_index', :locals => {:store => s} %>
# while looping through @stores.each do |s|

最佳答案

如果我理解正确,您将希望 Controller 操作呈现 javascript。做这样的事情:

def follow_or_unfollow
@store = Store.find(params[:store_id])

if current_user.voting_for?(@store)
current_user.unvote_for(@store)
else
current_user.vote_for(@store)
end

respond_to |format|
format.js
end
end

然后在您的 View 中创建一个名为 follow_or_unfollow.js 的文件并将其粘贴到其中:

$("#<%= @store.id %>").html("<%= escape_javascript( render partial: 'favorite_index', locals: {store: @store} ) %>");

注意 jquery 开头的“#”,这样它就知道这是一个 ID。最后确保 _favorite_index.html.erb 存在于同一目录中的某个位置并呈现新的按钮状态。

关于javascript - 渲染js Action 并传递本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com