Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用ajax通过链接按钮调用不同的作用域?_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails 如何使用ajax通过链接按钮调用不同的作用域?

Ruby on rails 如何使用ajax通过链接按钮调用不同的作用域?,ruby-on-rails,ajax,Ruby On Rails,Ajax,我正在做一个项目,用户可以创建活动并注册成为其他用户活动的来宾。个人资料的左侧显示个人信息,右侧显示事件提要。在配置文件下面,我想添加以不同方式(未来、过去、用户创建等)排序事件的链接。它看起来类似于此模板中“类别”下的部分: 我想使用ajax调用来实现这一点。我已经在我想要的事件模型中构建了大部分作用域。我只需要一种方法来优雅地更新提要。 对不起,如果我没有很好地描述这一点。我是rails的新手 这是相关代码。 事件模型: class Event < ApplicationRecord

我正在做一个项目,用户可以创建活动并注册成为其他用户活动的来宾。个人资料的左侧显示个人信息,右侧显示事件提要。在配置文件下面,我想添加以不同方式(未来、过去、用户创建等)排序事件的链接。它看起来类似于此模板中“类别”下的部分:

我想使用ajax调用来实现这一点。我已经在我想要的事件模型中构建了大部分作用域。我只需要一种方法来优雅地更新提要。 对不起,如果我没有很好地描述这一点。我是rails的新手

这是相关代码。 事件模型:

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的人。谢谢你的回复@粗纱机