Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 如何将控制器中定义的方法移动/转换为其自己的restful路由_Ruby On Rails_Ruby On Rails 4_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 如何将控制器中定义的方法移动/转换为其自己的restful路由

Ruby on rails 如何将控制器中定义的方法移动/转换为其自己的restful路由,ruby-on-rails,ruby-on-rails-4,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 4,Ruby On Rails 5,我只是想知道如何将我的方法从get请求移动到一个特定的控制器,在那里我可以定义它并将它作为restful路由在资源中使用, 例如: 我有以下资源: resources: send_sms get :new_sms to, send_sms#new_sms 我希望在我的资源中也能使用这种新的方法。不想另外使用get 我的路线.rb resources :send_sms, only: %i[index create] get :new_sms, to: 'send_sms#new_sms' 在

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

resources: send_sms
get :new_sms to, send_sms#new_sms
我希望在我的资源中也能使用这种新的方法。不想另外使用get

我的路线.rb

resources :send_sms, only: %i[index create]
get :new_sms, to: 'send_sms#new_sms'
在这里,我想将我的新短信移动到资源处。我不想使用此。。获取
:新建短信
,发送至:
发送短信#新建短信

我的发送短信控制器.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'
class Admin::SendSmsController
您可以在资源中定义成员路由

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

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

这将生成一个成员路由
get'/send_-sms/:id/new_-sms',to:'send_-sms#new_-sms'

您还可以在资源中定义收集路线

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

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'

我怎样才能摆脱get?我不想使用get for new_sms只是想将它转移到资源中,然后从那里调用新的_sms