Page.find(permalink: 'home')
# => Page.find(permalink: 'home')
# => ArgumentError: Unknown key: permalink
Page.where(permalink: 'home')
# => [#<Page id: 1, permalink: "home", content: "foo", created_at: "2014-05-14 01:54:06", updated_at: "2014-05-14 01:54:06">]
路線Rails的Model.find鑰匙沒找到,Model.where鑰匙上發現
get ':permalink', to: 'page#show', as: :page
型號
class Page < ActiveRecord::Base
validates_uniqueness_of :permalink
end
控制器
class PageController < ApplicationController
def show
@page = Page.find(permalink: params[:permalink])
end
def new
@page = Page.new
end
def create
@page = Page.new page_params
if @page.valid?
redirect_to @page
else
render :new
end
end
def update
@page = page.find(params[:permalink])
if @page.update(page_params)
redirect_to @page
else
render :edit
end
end
def edit
@page = page.find params[:permalink]
end
private
def page_params
params.require(:page).permit(:permalink, :content)
end
end
我在做點什麼嗎?
'find'用於通過'id'查詢:'找到(12)','通過使用permalink''find_by_permalink( '固定鏈接')' –
但是,由於導軌4個這樣發現者被棄用查詢,所以最好使用'where(...)。first' –
@SergeyKishenin動態查找器如'find_by_permalink('home')'在4.0中已被棄用,但在Rails 4+中,您將需要使用:Page。 find_by(永久鏈接:'home')'。 'find_by(...)'更快/不會在SQL中執行'order by',並且鍵入的次數更少。 –