Sinatra 编程
1)get/post/put的次序
(一)此段代码访问songs/new会进入songs/new
get '/songs/new' do
@song = Song.new
slim :new_song
end
get '/songs/:id' do
@song = Song.find_by(id: params[:id])
slim :show_song
end
(二)此段代码访问songs/new会进入songs/:id
get '/songs/:id' do
@song = Song.find_by(id: params[:id])
slim :show_song
end
get '/songs/new' do
@song = Song.new
slim :new_song
end
2)datamapper使用
参见http://datamapper.org/getting-started.html
require 'rubygems'
require 'data_mapper' # requires all the gems listed above
require 'dm-migrations'
DataMapper.setup(:default, 'sqlite:///path/to/project.db')
class Category
has n, :categorizations
has n, :posts, :through => :categorizations
end
DataMapper.finalize
DataMapper.auto_migrate!
3)activerecord使用
参见https://ruby-china.github.io/rails-guides/active_record_basics.html
class Product < ApplicationRecord
self.table_name = "my_products"
end
user = Product .create(name: "David", occupation: "Code Artist")
users = Product .all
4) rackup config.ru跨域问题
参见 https://github.com/cyu/rack-cors
gem install rack-cors
config.ru中添加
require "rack/cors"
use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end