gpt4 book ai didi

javascript - 一个 Rails View 上的多个 Ajax 请求

转载 作者:行者123 更新时间:2023-11-29 10:18:44 25 4
gpt4 key购买 nike

我在一个页面上有两个 ajax 请求(一个显示日期,一个显示日历)

请求一个:点击一个日期(在日历上),将更新日期。

请求二:可以在日历的月份之间切换。

发生的事情是我在 index.js.erb 中同时拥有这两个函数,并且它总是同时执行这两个函数,每次我更改月份时都会重置“请求一个”中的日期。

我可以让它一次只执行 index.js.erb 的一个函数吗?

Index.js.erb

$("#calendar").html("<%= escape_javascript(render('layouts/calendar')) %>");
$("#today").html("<%= escape_javascript(render('layouts/today')) %>");

_today.html.erb

<div class="span3 offset2 dateToday">
<% end %>
<span id="currentdate">
<%= @eventDate.strftime("%B") %><br>
<span id="dayDate"><%= h @eventDate.day %></span>
</span>
</div>

_calendar.html.erb

  <h2 id="month">
<span class="pull-left"><%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m-01") %></span>
<%= h @date.strftime("%B %Y") %>
<span class="pull-right"><%= link_to ">", :month => (@date.end_of_month+1).strftime("%Y-%m-01") %></span>
</h2>
<%= calendar_for(@events, :year => @date.year, :month => @date.month) do |t| %>
<%= t.head('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun') %>
<%= t.day(:day_method => :eventdate) do |date, events| %>
<div class="day">
<%= link_to(date.day, {:day => date }, :remote => true, :class => "btn dayBtn") %>
</div>
<% end %>

编辑:routes.rb

resources :calendar

root :to => "calendar#index"

match '/faq', to: 'calendar#faq'
match ':controller/:action'

编辑 - 链接到 ajax 操作

<%= link_to "<", :month => (@date.beginning_of_month-1).strftime("%Y-%m-01"), :action => "update_calendar", :remote => true %>

谢谢!

最佳答案

您要么必须设置逻辑以根据您传递的某些参数做出不同的响应,要么您需要将它们分解为两个不同的操作,因为它们实际上是两个不同的操作。

所以如果你使用参数方法,就像这样。

-if param[:one]
$("#calendar").html("<%= escape_javascript(render('layouts/calendar')) %>");
-if param[:two]
$("#today").html("<%= escape_javascript(render('layouts/today')) %>");

或者如前所述,将它们分解为不同的操作。

在你的 Controller 中

def update_today
#your today logic thats in your current action
respond_to do |format|
format.js{render}
end
end

def update_calendar
#your today logic thats in your current action
respond_to do |format|
format.js{render}
end
end

然后您必须为这两个操作添加路由。

update_today.js.erb

$("#today").html("<%= escape_javascript(render('layouts/today')) %>");

update_calendar.js.erb

$("#calendar").html("<%= escape_javascript(render('layouts/calendar')) %>");

关于javascript - 一个 Rails View 上的多个 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15736320/

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