知识点:数据类型,路径问题。

to_s converts values to strings. to_i converts values to integers (numbers.) to_a converts values to arrays.

b = { id:3,
      status: "I just ate some delicious brains,
      zombie: "Jim"}

这是这个哈希表单,有很多的key和vaule,我们叫key为symbol variable[:key] => value

puts t[:id]是HASH SYNTAX puts t.id是DOT SYNTAX

def show
  @tweet = Tweet.find(1)
  render action: 'status'
end

/app/views/tweets/status.html.erb也可以调用show action

如何全局搜索id params = { id: “1” }进化成params[:id]

/tweets?status=I’m dead params = { status: “I’m dead” } @tweet = Tweet.create(status: params[:status]) /tweets?tweet[status]=I’m dead params = { tweet: {status: “I’m dead”}} @tweet = Tweet.create(status: params[:tweet][:status]) 可以替换成 @tweet = Tweet.create(params[:tweet])

如何将两个id提出来生成一个表单,现在需要把两个post的id提出来然后通过表单的形式提交给order 这里order需要在model有两个key,poster_id和asker_id add_column :orders, :poster_id, :integer add_column :orders, :asker_id, :integer 在model里面更改 belongs_to :asker, :class_name => “User” belongs_to :poster, :class_name => “User” 在model中,我们可以直接这样从order中调取user信息,并且命名为自己设置的变量

在view里面添加一个表格

<%= simple_form_for Order.new , :url => admin_orders_path(:poster_id => post.id) do |f| %>
  <%= f.input :asker_id, :as => :select, :collection => User.all.map(&:id) %>
  <%= f.sumbit '配对' :class => "btn btn-default" %>
<% end %>

f.input :asker_id, :as => :select, :collection => Post.where.not(id: post.id).map(&:id) 因为现在我们只提交了一个asker_id给order,order还需要一个poster_id,所有需要在order的create action里面加入 @order.poster_id = params[:poster_id] 下面还有个一些进阶的改动,我们提交post给order后,我们不希望post#index上还有已配对的post,所以在order#index里面加入where not in

def index 
  @posts = Post.where('id NOT IN (SELECT DISTINCT poster_id FROM orders)
                        AND id NOT IN (SELECT DISTINCT asker_id FROM orders)')
end

查了rails指南,如果查询是希望指定字段的通知记录只出现一次,可以使用distinct的方法 Client.select(:name).distinct SQL SELECT DISTINCT name FROM clients 这样写很蠢,希望有更厉害的写法

下面是关于session在codeschool里面的解释(session works like a per user hash) 放在edit action里面 if session[:zombie_id] != @tweet.zombie_id

下面是routes在codeschool的讲解,主要是对单一RESTful get ‘/new_tweet’ => ‘tweets#new’ (path) (controller)(action)

get ‘/all’ => ‘tweets#index’ <%= link_to “All Tweets”, ? %>这里的路径写什么呢 tweets_path wouldn’t work 需要在get ‘/all’ => ‘tweets#index’里面给出一个名字get ‘/all’ => ‘tweets#index’ as: ‘all_tweets’ <%= link_to “All Tweets”, all_tweets_path %>

get ‘/all’ => redirect(‘tweets’)