gpt4 book ai didi

ruby-on-rails - Ruby on Rails 中的 Pets#edit 中没有方法错误

转载 作者:行者123 更新时间:2023-12-02 02:45:01 26 4
gpt4 key购买 nike

我有一个 Ruby on Rails 应用程序,其中有以下资源:宠物、宠物类型、疫苗接种(给宠物接种疫苗的事件)和人员。所以,宠物属于一个类型(一个类型有很多宠物),疫苗接种属于宠物(一只宠物可以有很多疫苗接种)。我想做的是:在疫苗接种索引中拥有一个所有宠物类型的可折叠列表(选择),并带有提交按钮,以便我可以按宠物类型过滤疫苗接种。我的代码如下:

这是在宠物 Controller 中:

def new
@pet = Pet.new
@sex = ["Male" , "Female"]
@owner = Person.where(occupation: "Owner")
end

def edit
end

宠物形态:

<div class="field">
<%= form.label :owner %>
<%= form.collection_select(:person_id, @owner, :id, :surname) %>
</div>

<div class="field">
<%= form.label :name %>
<%= form.text_field :name %>
</div>

<div class="field">
<%= form.label :type %>
<%= form.collection_select(:type_id, Type.all, :id, :name) %>
</div>

<div class="field">
<%= form.label :born %>
<%= form.date_select :born %>
</div>

<div class="field">
<%= form.label :sex %>
<%= form.select(:sex, @sex) %>
</div>

<div class="actions">
<%= form.submit %>
</div>
<% end %>

我在创建宠物时没有任何问题,但是当我想编辑宠物时,它给了我无方法错误: enter image description here

最佳答案

当您使用collection_select时,您传递的集合是 mapped为将要构建的select创建选项:

collection.map do |element|
[value_for_collection(element, text_method), value_for_collection(element, value_method), option_html_attributes(element)]
end

现在您没有传递集合,这就是为什么您收到错误消息,告诉您没有 nil 对象的方法 map

如文档中所述,方法定义需要第二个参数,即集合:

collection_select(method, collection, value_method, text_method, options = {}, html_options = {})

您应该像在 form.collection_select(:type_id, Type.all, :id, :name) 中那样传递您想要创建 select 标记的任何内容。

关于ruby-on-rails - Ruby on Rails 中的 Pets#edit 中没有方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62942334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com