加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在委派字段上使用ransack

发布时间:2020-12-17 04:17:24 所属栏目:百科 来源:网络整理
导读:我有以下型号 class Position ActiveRecord::Base belongs_to :position_name delegate :name,to: :position_name 而这个搜索表单 = search_form_for @search,url: '#',method: 'GET',html: {id: nil,class: "term_search_form"} do |f| = f.text_field :nam
我有以下型号
class Position < ActiveRecord::Base

  belongs_to :position_name
  delegate :name,to: :position_name

而这个搜索表单

= 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')

我仍然收到此错误消息:

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

我认为这是因为委托的方法名称.

如何在委派方法上使用ransack?

解决方法

这是一个迟到的答案,但也许它会帮助别人.
所以,我有一个类似的问题.

我有3个模型:区域,建筑和产品,其中区域有很多:建筑物,建筑物has_many:产品.在我的产品模型中,我使用了delegate:area_id,来::: building.

我使用ransack通过名称,区域,建筑等字段搜索产品.在我的控制器的动作中,@ search变量包含了相关的Buiding模型,如下所示:

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

所以我的search_form就像

= 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))

也就是说,如果在你的控制器中你已经包含了相关的模型:position_name,那么你应该使用= f.text_field:position_name_name_cont

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读