ruby-on-rails – Ruby on Rails:如何打印字符串以及它在哪里显
我知道这是一个微不足道的问题.但我在谷歌搜索,但无法找到这个问题的简单答案.
基本上我有一行说<%= link_to'运行它',:method => ‘doIt’%>在视图中,然后在相应的控制器中,我有doIt方法如下: def doIt puts "Just do it" end 我只是想检查一下,如果我点击Run it,它将输出字符串“Just do it”.我在localhost上运行它并且没有错误,但我无法在任何地方找到输出“Just do it”.它不会显示在rails控制台或rails服务器日志中.我只是想知道输出字符串的位置,在哪里找到它? 第2轮:所以这就是我试过的…… 在index.html.erb中添加了这一行(这是根) <%= link_to 'Run it',:method => 'do_it' %> 在网址中,它基本上只是http://localhost:3000/(因为我将控制器#index作为root路由) 显示只是一个带下划线的’Run it’,它链接到控制器中的’do_it’方法. 在控制器中,我包括这种方法 def do_it logger.debug "Just do it" end 当我点击“运行它”,网址更改为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,都没有在开发日志中打印出“Just do it”这一行 @Paul:我没有触摸环境文件夹或文件,我假设默认情况下创建一个新的rails应用程序,它正在开发中? @Maz:是的你是对的,我只是想测试do_it方法是否被调用.为此,我只想在控制器中打印出一些东西.想不出任何简单的方法只是打印出一个字符串,但这个问题让我痛苦不堪.我只是使用textmate,没有IDE. 第3轮: @Paul thx很多,但我遇到了错误 我的路线文件现在是: 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 我收到此错误:
错误在这里,第二行: 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 down: root :to => "gollum_starters#index" match 'gollum_starters/do_it' => 'gollum_starters#do_it',:as => 'do_it' resources :gollum_starters 但得到了这个错误(我希望自杀),
:/ ———-回答第4轮———— 基本上,当错误解释时,没有模板(即网页)显示因此抛出错误.解决方案是添加redirect_to,在这种情况下,我重定向到root_url. def do_it logger.debug 'Just do it' redirect_to(root_url) end 现在一切正常,“Just do it”最终输出到development.log和rails服务器控制台. 谢谢Maz,Paul和Andrew帮助我.学到很多. 解决方法
link_to没有做你认为它的值为:method指的是HTTP动词.
取自ActionView::Helpers::UrlHelper的文档
您需要在routes.rb文件中定义使用您的方法的路由 # The order of routes is important as the first matched will be used # therefore the match needs to be above 'resources :controller' match 'controller/do_it' => 'controller#do_it',:as => 'do_it' resources :gollum_starters # <--- This needs to be below the match or this will catch first > controller / do_it是要匹配的路由 你的link_to可能看起来像 <%= link_to "Do it",do_it_path %> 要完成请求的生命周期,您需要添加要呈现的视图 app/views/gollum_startes/do_it.html.erb # <-- Add file 摘要所有这些只是为了将日志打印到日志中而造成一些混乱,但它应该可以帮助您更好地理解整个生命周期.此外,这个答案可以作为一个文件来帮助你回避这个烂摊子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |