我的应用程序包含饮料模型
class Drink < ActiveRecord::Base
attr_accessible :name
has_many :recipe_steps, :dependent => :destroy
has_many :ingredients, through: :recipe_steps
end
成分模型
class Ingredient < ActiveRecord::Base
attr_accessible :name
has_many :recipe_steps
end
当用户搜索一种含有该成分的所有饮料的成分时,我该如何使用呢?
其他信息:我正在使用太阳黑子/ solr进行搜索。
答案 0 :(得分:1)
首先,在您的Ingredient
模型中,您需要这一行:
has_many :drinks, through: :recipe_steps
定义has_many, through:
关系。确保RecipeStep
也包含这些行:
belongs_to :ingredient
belongs_to :drink
然后您可以执行DrinksController
:
def search
term = params[:search]
ingredient = Ingredient.where(:name => term)
@drinks = Ingredient.find(ingredient).drinks
end
你的表格应该是这样的:
<%= form_for @drink, :url => { :action => "search" } do |f| %>
<%= f.text_field :search %>
<% end %>
我不知道你所有的名字,但这应该让你去。
答案 1 :(得分:0)
以下应该可以正常工作:
class Ingredient < ActiveRecord::Base
...
has_many :recipe_steps
has_many :drinks, through: :recipe_steps
end