2013-04-23 20 views
6

ben şu modelinasıl devredilen alanlarda altüst kullanmak

class Position < ActiveRecord::Base 

    belongs_to :position_name 
    delegate :name, to: :position_name 

Ve bu arama formu

= search_form_for @search, url: '#', method: 'GET', html: {id: nil, class: "term_search_form"} do |f| 
     = f.text_field :name_cont, class: 'search-query', id: nil, placeholder: t('search') 

Ve hala bu hata iletisini: Bence

undefined method `name_cont' for #<Ransack::Search:0x007f97187c5b80> 

Yetki verilen yöntem adı nedeniyle.

Temsili yöntemlerde ransack'i nasıl kullanabilirim?

+0

aynı sorunu burada kullanmalısınız –

cevap

6

Bu biraz geç cevaptır, ama belki başka birine yardımcı olacaktır. Yani, benzer bir sorunum vardı.

3 modelim vardı: alan, bina ve ürün, alan has_many :buildings, binalar has_many :products. Ürün modelimde delegate :area_id, to: :building'u kullandım.

Ürünü ad, alan, bina gibi alanlara göre aramak için ransack kullandım. Benim kontrolörün eylem @search değişkeninde olduğu gibi Buiding modeli ilişkili dahil: Yani benim search_form olduğunu

= search_form_for @search, url: user_products_path do |f| 
    %td 
    %td= f.text_field :name_cont, class: "form-control", placeholder: t('.name') 
    %td= f.select :building_area_id_eq, options_for_select(Area.data_for_select(true), q_param(:building_area_id_eq)) 
    %td= f.select :building_id_eq, options_for_select(Building.data_for_select(true), q_param(:building_id_eq)) 

gibi

@search = Product.includes(:building).search(params[:q])

oldu controller içerisinde ilişkilendirilmiş bir model eklemiş ise: position_name Görüntünüze göre,

+0

Önek olmadan bunu yapmanın bir yolu var mı? Gibi: area_id_eq. – HFX

+0

@HFX Ben öyle düşünmüyorum –