【问题标题】:Calling custom methods in Sinatra在 Sinatra 中调用自定义方法
【发布时间】:2020-11-20 20:26:39
【问题描述】:

我正在尝试在 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>  

字符串.rb

class String

   def mymethod

   @var.reverse

   end

end

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

提前致谢。

【问题讨论】:

    标签: sinatra


    【解决方案1】:

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

    同样,当您执行puts "#{@var1}" 时,您可以执行puts @var1,但这会在 sinatra 的记录器中打印 var(通常是 STDOUT)

    puts 本身会返回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> 
    

    这里有一些红宝石书:

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

    http://ruby-doc.com/docs/ProgrammingRuby/ - 阅读也很棒

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      相关资源
      最近更新 更多