如何 move/convert 在我们的控制器中定义的方法到它自己的 restful 路由

How to move/convert a method which is defined in our controller to its own restful route

我只想知道如何将我的方法从 get 请求移动到特定的控制器,在那里我可以定义它并在资源中使用它作为 restful 路由, 例如: 我有以下资源:

resources: send_sms
get :new_sms to, send_sms#new_sms

我希望 new_sms 方法也能在我的资源中完成。不想另外使用get。

我的routes.rb

resources :send_sms, only: %i[index create]
get :new_sms, to: 'send_sms#new_sms'

这里我想将我的 new_sms 移动到不想使用它的资源.. get :new_sms, to: send_sms#new_sms

我的send_sms_controller.rb

class Admin::SendSmsController < AdminController
  before_action :authenticate_admin!
  before_action :user, only: %i[show edit new_sms kits_status]
  before_action :users, only: :index

  def show; end

  def index
    @users = users.search_by(params[:query]&.downcase)
  end

   #def new_sms; end


   def create

      client = Twilio::Client.new
      message = { to: user.phone_number,
                  body: params[:message] }
      client.send_message(message)
      redirect_to admin_users_path

   end
##################################################
my 
new_sms.slim
h2

  ="Send sms to #{@user.email}"
= simple_form_for(@user, url: admin_user_send_sms_path(@user), method: :post) do |f|
  section
  .form-inputs.column
    = text_area_tag 'message',nil, placeholder: 'write message here ...', size: "35x10"

  div#buttons
    =f.submit 'Send', class: 'btn btn-success'
    =link_to 'Cancel', admin_users_path, class: 'btn btn-danger'

您可以在资源中定义 成员 路由

resources :send_sms, only: %i[index create] do
  member do
    get :new_sms 
  end
end

这将生成一个 member 路由 get '/send_sms/:id/new_sms', to: 'send_sms#new_sms'

您还可以在资源中定义集合 路由

resources :send_sms, only: %i[index create] do
  collection do
    get :new_sms 
  end
end

这将生成一条集合路线 get '/send_sms/new_sms', to: 'send_sms#new_sms'