これを行うためのより良い方法があると確信していますが、経験が浅いため、そのより良い方法を整理するのに苦労しています。処理のためにコントローラーに送信してオブジェクトを送信する必要があるリンクがあります。正しく動作していません:
ビュー/ホーム/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>
controllers/restaurants.rb
def index
search_tag = params[:search_item]
@restaurants = Restaurant.search_by_tag(search_tag)
models/restaurant.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 だけがレストラン コントローラーに渡されています。この方法で完全なオブジェクトを渡すことはできません。私は何を間違っていますか?