我确信有更好的方法可以做到这一点,但由于我缺乏经验,我很难找到更好的方法。我有一个链接需要发送并反对控制器进行处理。它无法正常工作:
意见/主页/index.html.erb
<% search_term = "pizza" %>
<% @tag = Tag.find(:all, :conditions => ["name = ?", search_term ]).first %>
<li> <%= link_to(search_term, {:controller => "restaurants", :action => "index", :search_item => @tag}) %> </li>
控制器/餐厅.rb
def index
search_tag = params[:search_item]
@restaurants = Restaurant.search_by_tag(search_tag)
模型/餐厅.rb
Class Restauarant < ActiveRecord::Base
def self.search_by_tag(search_tag)
search_condition = search_tag.name
@tags = Tag.find(:all, :conditions => [" name = ?", search_condition ])
@tag = @tags.first
@Restaurants = @tag.restaurants
end
end
这会导致 ResataurantsController#index 中出现 NoMethodError
参数:
{"搜索项" => "15"}
出于某种原因,标签对象没有从 中正确传递,home/index.html.erb
而只是将 Tag-object :id 传递给餐馆控制器。不可能以这种方式传递一个完整的对象。我究竟做错了什么?