ruby-on-rails – Ruby on Rails:如何打印字符串以及它在哪里显示?

ruby-on-rails – Ruby on Rails:如何打印字符串以及它在哪里显示?,第1张

概述我知道这是一个微不足道的问题.但我在谷歌搜索,但无法找到这个问题的简单答案. 基本上我有一行说<%= link_to'运行它',:method => ‘doIt’%>在视图中,然后在相应的控制器中,我有doIt方法如下: def doIt puts "Just do it" end 我只是想检查一下,如果我点击Run it,它将输出字符串“Just do it”.我在localhost上运行 我知道这是一个微不足道的问题.但我在谷歌搜索,但无法找到这个问题的简单答案.

基本上我有一行说<%= 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:如何打印字符串以及它在哪里显示?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1293411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存