在Sinatra中调用自定义方法

时间:2012-03-06 17:55:41

标签: sinatra

我试图在Sinatra中调用表单输入的自定义方法,但我无法让它工作。

这是代码

the_app.rb

class TheApp < Sinatra::Base

require 'string.rb'

get "/" do
erb :index
end

post '/' do  
@var = "#{params[:post][:message]}"
@var1 = @var.mymethod
puts "#{@var1}"
end

end

index.erb

<form action="/" method="post">  
<input type="text" name="post[message]">  
<input type="submit">  
</form>  

string.rb

class String

   def mymethod

   @var.reverse

   end

end

我想在输入文本上执行逻辑,我只需要知道如何在@var上运行自定义方法。

提前致谢。

1 个答案:

答案 0 :(得分:2)

首先在String类中添加方法时,需要反转字符串对象本身(因此@var1.reverse变为self.reverse

当你puts "#{@var1}" puts @var1时,你可以puts,但这将在sinatra的记录器中打印var(通常是STDOUT)

nil本身将返回"",而sinatra将输出nil的字符串值require 'sinatra' class String def mymethod self.reverse end end get '/' do erb :index end post '/' do params[:post][:message].mymethod end __END__ @@index <form action="/" method="post"> <input type="text" name="post[message]"> <input type="submit"> </form> 并且您在浏览器中看不到任何内容(空白页),这是一个工作示例:

{{1}}

这里有一些红宝石书:

http://mislav.uniqpath.com/poignant-guide/ - 说话的狐狸 - 很棒的阅读:)

http://ruby-doc.org/docs/ProgrammingRuby/ - 也很精彩的阅读