カウントアプリ備忘録
paramsについて
code:ruby
post '/minus/:id' do
count = Count.find(params:id)#Countテーブルのid番目のレコードをcount変数に格納 count.number = count.number - 1
count.save
redirect '/count'
end
この様に記述すると複数のレコードに対応出来る
html側ではこの様に書けばよい
code:html
<form action="/minus/1" method="post">
<input type="submit" value="-">
</form>
<form action="/minus/2" method="post">
<input type="submit" value="-">
</form>
インスタンス変数はhtmlとかを超えて使える変数だが、sinatraの場合は毎回リクエスト毎にインスタンス生成がされているので基本的にメソッドを超えて使用出来ない?
cssが反映されない時
→スーパーリロードをする win「ctrl+f5」
for文をn回繰り返す時
code:ruby
10.times do |n|#0,1,2,3....9まで繰り返される
end
evalについて
引数で渡した文字列をRubyのプログラムとして実行するメソッドで、動的なメソッドの実装や、異常検知の実装などに利用ができる
code:ruby
Count.all.size.times do |n|#カラムの数を調べてその回数分だけ回す
eval("@number#{n+1}= Count.find(#{n+1}).number")
end
この時、erb側も同様に書いてあげれば良い
code:html
<%Count.all.size.times do |n|%>
<% if eval("@number#{n+1}")==0 %>
~~
<% end %>
code:ruby
def method_a
puts "method_a"
end
def method_b
puts "method_b"
end
mtehod_a # method_aの実行
method_b # method_bの実行
def method(name)
eval("puts "method_#{name}"")
end
method("a")
method("b")