基本上我有一行说<%= 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_startersroot :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
我收到此错误:
Couldn’t find GollumStarter with ID=do_it
错误在这里,第二行:
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
但得到了这个错误(我希望自杀),
Template is missing
Missing template gollum_starters/do_it with {:handlers=>[:erb,:rJs,
:builder,:rHTML,:rxml],:formats=>[:HTML],:locale=>[:en,:en]} in
vIEw paths “~/project_name/app/vIEws”
:/
———-回答第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的文档
:method – Symbol of http verb. Supported verbs are :post,:get,:delete and :put. By default it will be :post.
您需要在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是要匹配的路由
>控制器#do_it是控制器,后跟要使用的 *** 作(用#分隔)
>:的值:as创建可在link_to中使用的路径do_it_path
你的link_to可能看起来像
<%= link_to "Do it",do_it_path %>
要完成请求的生命周期,您需要添加要呈现的视图
app/vIEws/gollum_startes/do_it.HTML.erb # <-- Add file
摘要所有这些只是为了将日志打印到日志中而造成一些混乱,但它应该可以帮助您更好地理解整个生命周期.此外,这个答案可以作为一个文件来帮助你回避这个烂摊子.
总结以上是内存溢出为你收集整理的ruby-on-rails – Ruby on Rails:如何打印字符串以及它在哪里显示?全部内容,希望文章能够帮你解决ruby-on-rails – Ruby on Rails:如何打印字符串以及它在哪里显示?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)