0

当我转到我的页面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
4

2 回答 2

0

我猜你有这个app/view/searches/new.html.erb

<%= render @search %>

上面是一个简写,如果它是它@search的一个实例,Search它可以有效地做到这一点:

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

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

你到底想成为什么内容?替换此代码,或创建丢失的文件并添加内容。

于 2013-10-27T05:36:12.650 回答
0

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

<%= render @search.calendars %>

如果通过局部视图渲染是您想要的,那么您必须在app/views/searches/_searches.html.erb.

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

于 2013-10-27T04:23:56.187 回答