Вызов пользовательских методов в Синатре - PullRequest
1 голос
/ 06 марта 2012

Я пытаюсь вызвать пользовательский метод при вводе формы в 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 Ответ

2 голосов
/ 06 марта 2012

сначала при добавлении метода к классу String вам необходимо обратить вспять сам строковый объект (поэтому @var1.reverse становится self.reverse)

также когда вы делаете puts "#{@var1}", вы можете сделать puts @var1, но это напечатает переменную в логгере sinatra (обычно это 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://mislav.uniqpath.com/poignant-guide/ - говорящие лисы - потрясающее чтение:)

http://ruby -doc.org / docs / ProgrammingRuby / - также потрясающее чтение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...