Ruby on rails 如何使用ajax通过链接按钮调用不同的作用域?
我正在做一个项目,用户可以创建活动并注册成为其他用户活动的来宾。个人资料的左侧显示个人信息,右侧显示事件提要。在配置文件下面,我想添加以不同方式(未来、过去、用户创建等)排序事件的链接。它看起来类似于此模板中“类别”下的部分: 我想使用ajax调用来实现这一点。我已经在我想要的事件模型中构建了大部分作用域。我只需要一种方法来优雅地更新提要。 对不起,如果我没有很好地描述这一点。我是rails的新手 这是相关代码。 事件模型:Ruby on rails 如何使用ajax通过链接按钮调用不同的作用域?,ruby-on-rails,ajax,Ruby On Rails,Ajax,我正在做一个项目,用户可以创建活动并注册成为其他用户活动的来宾。个人资料的左侧显示个人信息,右侧显示事件提要。在配置文件下面,我想添加以不同方式(未来、过去、用户创建等)排序事件的链接。它看起来类似于此模板中“类别”下的部分: 我想使用ajax调用来实现这一点。我已经在我想要的事件模型中构建了大部分作用域。我只需要一种方法来优雅地更新提要。 对不起,如果我没有很好地描述这一点。我是rails的新手 这是相关代码。 事件模型: class Event < ApplicationRecord
class Event < ApplicationRecord
# == Constants ============================================================
# == Attributes ===========================================================
# == Extensions ===========================================================
# == Relationships ========================================================
belongs_to :creator, class_name: 'User'
has_many :invitations, foreign_key: :attended_event_id
has_many :attendees, through: :invitations, source: :attendee
# == Validations ==========================================================
# == Scopes ===============================================================
scope :upcoming, -> { where("start_time >= ?", Time.now) }
scope :past, -> { where("start_time < ?", Time.now) }
scope :soonest_first, -> { order(:start_time) }
scope :most_recent_first, -> { order(start_time: :desc) }
# == Callbacks ============================================================
# == Class Methods ========================================================
# == Instance Methods =====================================================
end
类事件{where(“start_time>=?”,time.now)}
范围:过去,->{where(“开始时间<?”,time.now)}
范围:最快的时间优先,->{顺序(:开始时间)}
作用域:最近的第一个,->{顺序(开始时间::描述)}
#==回调============================================================
#==类方法========================================================
#==实例方法=====================================================
结束
用户控制器:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user
redirect_to @user
else
render 'new'
end
end
def show
@user = User.find(params[:id])
#@events = @user.attended_events.paginate(page: params[:page], per_page: 10)
@upcoming_events = @user.events.upcoming.soonest_first
@past_events = @user.events.past.most_recent_first
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :username,
:email, :password, :password_confirmation)
end
end
class UsersController
相关部分意见:
<div class="row">
<div class="col-lg-4">
<div class="sidebar">
<h3 class="sidebar-title"><%= @user.username%></h3>
<div class="sidebar-item categories">
<h4 class="sidebar-title">Events</h4>
<ul>
WHERE I WANT LINKS!!!
</ul>
</div><!-- End sidebar categories-->
</div><!-- End sidebar -->
事件
我想在哪里链接!!!
您希望通过ajax实现,所以我想您应该使用js.erb
文件来更新显示事件的部分,对吗
我能想到的一种方法是在事件目录下添加一个
index.js.erb
文件,并执行类似于
的操作,在事件控制器中,您可以使用过滤器
参数来过滤事件。为了让rails区别于对普通请求的Ajax调用,您需要将逻辑放在format.js{}
中,我将在明天休息时尝试。谢谢。如果你能接受我的答案,那就太好了。bro~@EojoI做了更多的研究,最后只使用了查询字符串,这是我写这篇文章时没有意识到的。不幸的是,我认为我现在是一个很难搞乱ajax的人。谢谢你的回复@粗纱机