rails中的事件/链接处理

Event/link Handling in rails

本文关键字:链接 处理 事件 rails      更新时间:2023-09-26

由于我是rails和webapps的新手,所以我真的不知道如何问这个问题的术语,所以我只描述我想要实现的

例如,在我的控制器中,我有来自世界各地用户的所有消息的显示。我希望用户能够决定消息是来自世界各地还是来自他的国家。

我知道如何获取相关消息并将它们放入相关变量中:

@msg_glbl = msgs.all
@msg_lcl = msgs.find_all_by_local(true)

我的问题是如何使这个工作的逻辑和流程。我想网页有一个链接/按钮/标志的图像,所以当用户点击它的控制器会做一些事情。

我知道我需要Javascript,但我不知道如何使它,所以Javascript将调用一个特定的方法在控制器或其他一些动作。

类似:

javascript: onclick(flag) do something in controller

控制器将在@msgs中放置适当的变量(全局或局部),并且视图将始终呈现@msgs

我意识到我错过了一些基本的东西,我只是不知道如何在谷歌搜索这个

在rails中,您可以创建可通过URL访问的GET操作,并且可以在操作范围中添加可访问的URL参数。

假设你的控制器是pages,你的模型是Message。然后在控制器(app/controller/pages_controller.rb)中有一个动作,可以通过两种不同的方式调用:

class PagesController < ApplicationController  
  # GET /pages/messages
  # GET /pages/messages?only_country=1
  def messages
    if(params[:only_country].nil? || params[:only_country].to_s != '1')
        @msgs = Message.all
    else
        @msgs = Message.find_all_by_local(true)
    end
    respond_to do |format|
      format.html # messages.html.erb
      format.json { render json: @msgs }
    end
  end

app/views/pages/messages.html.erb中只有一个视图

配置/routes.rb

get "/pages/messages"

你的链接将指向/pages/messages和/pages/messages?only_country = 1

欢呼。

编辑:将所有内容更改为pages_controller.rb