工作日志5 Ruby_on_rails学习
这个工作内容是更改检测系统的web端,增加一个更改某个特定表的功能。主要使用ruby on rails。
ruby on rails quick start
官方入门教程rais入门
总的来说,rails是一个web框架,最重要的三个模块是controller routes view
controller控制着view的生成。
view中使用的方法,以及view的名称,都应该在contoller中定义。
view也就是page,包含每个页面的html文件。view下每个page的路径即为其的URL导航。这些导航也可以在routes中更改。
lib中可以放置一些扩展脚本,一般都是.sh文件或者.rb文件。 .rb文件的执行命令为:rails runner .rb
总之搞不明白了就再把官方文档看一遍。
model
rails中类似java和python的class即为model。model之间可以有属于、包含、一对多多对多的关系。
web端与db的通信
除去rails中使用model进行通信之外,还可以使用直接send SQL query的方法。 例如: sql = ActiveRecord::Base.send( :sanitize_sql_array, [amount_target_list_sql, today:today] ) logger(“amount send is ok”) # logger(sql)
results = ActiveRecord::Base.connection.select_all(sql)
logger('amount select is ok')
rails在启动的时候会建立web和db的连接。手动建立新的连接可以使用 ActiveRecord::Base.establish_connection(config)
限定条件取得数据
参考这个连接(rbr写博客真的很详细)qiita rails 语法
where
model.where(colname:‘value’) model.where.not(colname:‘value’) model.where(colname1:‘value1’).or(colname2:‘value2’)
first and last
model.first(n) model.last(n)
select
model.select(:colname) model.select(‘colname’)
order
model.order(’name ASC’) model.order(name::desc)
limit
model.limit(n)
get all column names
model.column_names
ruby 语法
num to str
‘ABC’ + 12.to_s
get var value
"@post_#{id}"
eval:执行字符串代表的语句
a = nil
eval('a = RUBY_RELEASE_DATE')
p a #=> "2007-03-13"
迭代:each_with_index/each
[5, 10, 15].each_with_index do |n, idx|
p [n, idx]
end
# => [5, 0]
# [10, 1]
# [15, 2]
ruby和rails的交互式命令行
ruby: irb
rails: rails c
HTML
table 中的tr(table row) th(table head) td(table data)
<table>
<tr>
<th>Player Name </th> <-- Each of these
<th>Position </th> is a column header
<th>Avg. Ranking </th>
</tr>
<% @players.each do |player| %>
<tr>
<td><%= player.name%></td> <-- Each of these adds
<td><%=player.position %></td><td> data to the corresponding
<td><%=player.avg_ranking %></td> column in the same row
</tr>
<% end %>
</table>