Ruby on Rails: как распечатать строку и где она отображается?

Я знаю, что это тривиальный вопрос. Но у меня есть поиск по всему Google, но я не могу найти простого ответа на этот вопрос.

В основном у меня есть строка, в которой говорится 'doIt'%> в представлении, затем в соответствующем контроллере у меня есть метод doIt следующим образом:

def doIt
  puts "Just do it" 
end

Я просто хочу проверить, что если я нажму «Выполнить», он выведет строку «Просто сделай это ". Я запустил это на localhost, и ошибок нет, но я нигде не могу найти вывод «Просто сделай это». Он не отображается в консоли rails или в журнале сервера rails. Я просто хочу знать, куда помещает вывод строки, где ее найти?


Раунд 2: Это то, что я пробовал ....

Добавил эту строку в index.html.erb (это корень)

<%= link_to 'Run it', :method => 'do_it' %>

, а в URL-адресе это просто http: // localhost: 3000 / (поскольку я маршрутизирую контроллер # как root)

На дисплее отображается просто подчеркнутое «Выполнить it ', который ссылается на метод' do_it 'в контроллере.

В контроллере я включаю этот метод

def do_it
  logger.debug "Just do it"
end

, когда я нажимаю «Run it», URL-адрес меняется на http: // localhost: 3000 / gollum_starters? method = do_it , а в development.log записано следующее:

Started GET "/gollum_starters?method=do_it" for 127.0.0.1 at 2011-08-25 15:27:49 -0700
  Processing by GollumStartersController#index as HTML
  Parameters: {"method"=>"do_it"}
  [1m[35mGollumStarter Load (0.3ms)[0m  SELECT "gollum_starters".* FROM "gollum_starters"
Rendered gollum_starters/index.html.erb within layouts/application (3.6ms)
Completed 200 OK in 16ms (Views: 7.7ms | ActiveRecord: 0.3ms)

Кроме того, я пробовал все logger.error / info / fatal / etc ... и Rails.logger.error / info / fatal / etc, все не распечатали строку «Просто сделай это» в журнале разработки

@Paul: Я не касался папки или файла среды, я предполагаю по умолчанию, когда создается новое приложение rails , он в разработке?

@Maz: Да, ты прав, я просто пытаюсь проверить, работает ли do_it вызывается метод. Для этого я просто хочу что-то распечатать в контроллере. Не могу придумать ничего проще, чем просто распечатать строку, но эта проблема делает меня несчастным. Я просто использую textmate, без IDE.


Раунд 3:

@Paul thx alot, но я обнаружил ошибку

Мои файлы маршрутов сейчас:

resources :gollum_starters

root :to => "gollum_starters#index"

match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'

Мой index.html.erb теперь:

<%= link_to "Do it", do_it_path %>

Мой gollum_starters_controller.rb

def do_it
  logger.debug 'Just do it'
end

Я получаю эту ошибку:

Не удалось найти GollumStarter с ID = do_it

ошибка здесь, 2-я строка:

def show
    @gollum_starter = GollumStarter.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @gollum_starter }
    end
  end

Интересно, почему он показывает маршрут? Когда я нажимаю do_it, он фактически переходит на localhost: 3000 / gollum_starters / do_it, что верно, но, очевидно, ошибка указывает на метод show?


Раунд 4:

@Paul, я переместил ресурсы: gollum_starters вниз:

root :to => "gollum_starters#index"

match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'

resources :gollum_starters

, но получил эту ошибку (боже, я хочу убить себя),

Шаблон отсутствует

Отсутствует шаблон gollum_starters / do_it с {: handlers => [: erb,: rjs, : builder,: rhtml,: rxml],: sizes => [: html],: locale => [: en,: en]} в пути просмотра "~ / имя_проекта / приложение / просмотров"

: /

---------- Ответ на 4-й раунд ----------- -

В основном, как объясняется в ошибке, не существует шаблона (т.е. веб-страницы) для отображения, поэтому возникает ошибка. Решение - добавить redirect_to, в этом случае я перенаправляю на root_url.

def do_it
  logger.debug 'Just do it'
  redirect_to(root_url)
end

Теперь все работает, "Просто сделай это", наконец, выводится в development.log и в консоль сервера rails.

Спасибо, Маз, Пол и Эндрю за помощь. Узнай много нового.

6
задан John Lee 25 August 2011 в 23:59
поделиться