为什么不渲染@search有效?

时间:2013-10-26 22:04:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

当我在127.0.0.1/searches/new转到我的页面并点击提交时,我得到:

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

2 个答案:

答案 0 :(得分:0)

以下行尝试通过局部视图渲染模型:

<%= render @search.calendars %>

如果您想要通过部分视图进行渲染,则必须在app/views/searches/_searches.html.erb创建文件。

或者删除上面的渲染调用,然后将渲染逻辑放在app/views/searches/view.html.erb文件中。

答案 1 :(得分:0)

我猜你在app/view/searches/new.html.erb

中有这个
<%= render @search %>

上面是一个简写,如果@searchSearch的实例,它实际上是这样做的:

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

但是,您的应用程序找不到视图部分app/views/searches/_search.html.erb

您究竟想要成为什么内容?替换此代码,或创建丢失的文件并添加内容。