我正在关注铁路广播上的视频,但我被卡住了。下面是我的代码:
locals_controller.rb
def landing
@locals = Local.search(params[:search])
endlocal.rb (型号)
def self.search(search)
if search
where('nome LIKE ?', "%#{search}%")
else
all
end
end和视图landing.html.erb
<% if signed_in? %>
<%= form_tag root_path, :method => :get, :class => "center form-search" do %>
<p>
<%= text_field_tag :search, params[:search], :class => "input-medium search-query" %>
<%= submit_tag "Search", :name => nil, :class => "btn" %>
</p>
<%= render "landing_search" %>
<% end %>而引发错误的部分,因为,基本上,@locals是零,因为它是"undefined method each for nil:nilClass"
_landing_search.html.erb
<% @locals.each do |local| %>
...我错过了什么?
I‘’va还添加了
match '/', to: "locals#landing"在我的routes.rb中,因为在我的例子中,要显示的页面位于根路径
发布于 2012-07-18 21:31:45
看起来一切都很好,但是我已经检查了你的代码,并且你定义了两次landing动作(底部的动作覆盖了第一个动作):
def landing
@locals = Local.search(params[:search])
end
# ...
def landing #line 86
end因此,如果你删除第二个,一切都会好起来的。
发布于 2012-07-18 01:03:04
也许你应该在名字上把o改为a?
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
all
end
end发布于 2012-07-18 22:11:43
首先,检查你在控制器中定义了多个登陆方法,如果是,最后一个方法将被调用。
第二步,像这样改变你的控制器:
def self.search(opts)
return self.all if opts.blank?
self.where('nome LIKE ?', "%#{opts}%")
endhttps://stackoverflow.com/questions/11527258
复制相似问题