2013-10-26 115 views
0

當我去我的網頁在127.0.0.1/searches/new和我點擊提交,我得到:爲什麼不渲染@search工作?

ActionView::MissingTemplate in Searches#show 

Missing partial searches/search with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: 

我不明白爲什麼,因爲正常的Rails將結果發送到yield,不是嗎?

在我show.html

<%= render @search.calendars %> 

在我的控制器searches_controller.rb

def new 
    @search = Search.new 
end 

def create 
    @search = Search.create!(params[:params]) 
    redirect_to @search 
end 

def show 
    @search= Search.find(params[:id]) 
end 

在我的模型searches.rb

def calendars 
    @calendars ||= find_calendars 
end 

private 

def find_calendars 
    calendars = Calendar.order(:event) 
    calendars = calendars.where("event like ?", "%#{keywords}%") if keywords.present? 
    calendars 
end 

在我routes.rb

resources :searches 
+3

你是否在'app/views/searches/_search.html.erb'文件中有部分文件?這就是Rails正在尋找的錯誤信息。 – carols10cents

回答

0

下面一行試圖通過局部視圖來渲染模型:

<%= render @search.calendars %> 

如果通過局部視圖渲染是你想要的東西,那麼你必須在app/views/searches/_searches.html.erb創建文件。

或者,移除上面的渲染調用,然後將渲染邏輯放在app/views/searches/view.html.erb文件中。

0

我猜測你在app/view/searches/new.html.erb有這樣的:

<%= render @search %> 

上面是一個速記,如果@search是的Search它是一個實例,有效地做到這一點:

<%= render :partial => 'searches/search', :locals => {:search => @search} %> 

但是,您的應用程序未找到部分視圖app/views/searches/_search.html.erb

你到底想做什麼內容?替換此代碼,或創建缺少的文件並添加內容。