未定义的方法`to_model' ActiveRecord关系

时间:2017-04-11 11:31:59

标签: ruby-on-rails activerecord ruby-on-rails-5

我有这样的确切错误消息:String[] description();

我错过了什么......但是什么? 谢谢你的帮助:)

这是 views / installations / _form.html.erb

中的搜索表单
undefined method to_model' for #<Onduleur::ActiveRecord_Relation:0x007f8bcf631110>

这是我的 installations_controller.rb

<%= simple_form_for :query, url: @onduleurs, method: :get, wrapper: :inline_form, html: {class: 'form-inline'} do |f| %>
  <%= f.input :identifier, collection: Onduleur.group(:identifier).map {|o| o.identifier} ,  prompt: "Choississez un onduleur" %>
  <%= f.button :submit, "Chercher", class:"btn btn-success" %>
  <%= link_to "Voir tous les onduleurs", {controller: "installations", action: 'show'}, class: "btn btn-success"  %>
<% end %>

关于我的模特:

installation.rb

 class InstallationsController < ApplicationController

  def index
    @installations = Installation.all
  end

  def show
    filter_onduleurs if params[:query].present?
    @onduleurs ||= Onduleur.all
    @installation = Installation.find(params[:id])
  end

  def new
    @installation = Installation.new
  end

  def create
    @installation = Installation.new(installation_params)
    if @installation.save
      redirect_to installations_path, notice: "L'installation a bien été crée"
    else
      render :new, notice: "L'installation n'a pas pu être crée, veuillez rééssayer"
    end
  end


  private

  def filter_onduleurs
    @onduleurs = Onduleur.where('identifier LIKE ?', params[:query][:identifier]) if params[:query][:identifier].present?
    @onduleurs = Onduleur.where('datetime LIKE ?', params[:query][:datetime]) if params[:query][:datetime].present?
  end

  def installation_params
    params.require(:installation).permit(:name)
  end
end

onduleur.rb

has_many :onduleurs,  dependent: :destroy

以下是我的路线:

belongs_to :installation

1 个答案:

答案 0 :(得分:2)

多数民众赞成因为to_model方法只能在一个AR实例上调用。

您在表单中使用url: @onduleurs而不是Onduleur模型的单个实例提供了一个集合。