Я знаю, что это тривиальный вопрос. Но у меня есть поиск по всему 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.
Спасибо, Маз, Пол и Эндрю за помощь. Узнай много нового.