Как я могу вызвать методы контроллера / представления из консоли в Rails? - PullRequest
423 голосов
/ 30 сентября 2008

Когда я загружаю script/console, иногда я хочу поиграть с выходом контроллера или методом помощника вида.

Есть ли способы:

  • имитировать запрос?
  • вызывать методы из экземпляра контроллера по указанному запросу?
  • проверить вспомогательные методы, либо через указанный экземпляр контроллера, либо другим способом?

Ответы [ 14 ]

3 голосов
/ 24 декабря 2017

Внутри любого действия или представления контроллера вы можете вызвать консоль, вызвав метод console .

Например, в контроллере:

class PostsController < ApplicationController
  def new
    console
    @post = Post.new
  end
end

Или в виде:

<% console %>

<h2>New Post</h2>

Это создаст консоль внутри вашего вида. Вам не нужно заботиться о месте вызова консоли; он не будет отображаться сразу после вызова, но рядом с вашим HTML-контентом.

См .: http://guides.rubyonrails.org/debugging_rails_applications.html

2 голосов
/ 01 февраля 2019

Для контроллеров вы можете создать экземпляр объекта контроллера в консоли rails.

Например,

class CustomPagesController < ApplicationController

  def index
    @customs = CustomPage.all
  end

  def get_number
    puts "Got the Number"
  end

  protected

  def get_private_number
    puts 'Got private Number'
  end

end

custom = CustomPagesController.new
2.1.5 :011 > custom = CustomPagesController.new
 => #<CustomPagesController:0xb594f77c @_action_has_layout=true, @_routes=nil, @_headers={"Content-Type"=>"text/html"}, @_status=200, @_request=nil, @_response=nil> 
2.1.5 :014 > custom.get_number
Got the Number
 => nil

# For calling private or protected methods,
2.1.5 :048 > custom.send(:get_private_number)
Got private Number
 => nil
2 голосов
/ 15 июня 2016

Один из возможных подходов к тестированию метода Helper в консоли rails:

Struct.new(:t).extend(YourHelper).your_method(*arg)

и для перезагрузки и сделать

reload!; Struct.new(:t).extend(YourHelper).your_method(*arg)

1 голос
/ 08 января 2018

Если вы добавили своего собственного помощника и хотите, чтобы его методы были доступны в консоли, выполните:

  1. в консоли выполнить include YourHelperName
  2. Ваши вспомогательные методы теперь доступны в консоли, используйте их, вызывая method_name(args) в консоли.

Пример: скажем, у вас есть MyHelper (с методом my_method) в 'app / helpers / my_helper.rb`, затем в консоли выполните:

  1. include MyHelper
  2. my_helper.my_method
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...