这个工作内容是更改检测系统的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>