我试图在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上运行自定义方法。
提前致谢。
答案 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/ - 说话的狐狸 - 很棒的阅读:)