Mat*_*raf 2 ruby methods ruby-on-rails edit
我有一个 Ruby on Rails 应用程序,其中我有以下资源宠物、宠物类型、疫苗接种(给宠物接种疫苗的事件)和人员。所以,宠物属于一个类型(一个类型有很多宠物),疫苗属于一个宠物(一个宠物可以有很多疫苗)。我想要做的是:在疫苗接种索引中有一个带有提交按钮的可折叠列表(选择)o 所有宠物类型,以便我可以按宠物类型过滤疫苗接种。我的代码如下:
这是在宠物控制器中:
def new
@pet = Pet.new
@sex = ["Male" , "Female"]
@owner = Person.where(occupation: "Owner")
end
def edit
end
Run Code Online (Sandbox Code Playgroud)
这是宠物形式:
<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 %>
Run Code Online (Sandbox Code Playgroud)
当您使用 时collection_select,您传递的集合将被映射以创建select将要构建的选项:
collection.map do |element|
[value_for_collection(element, text_method), value_for_collection(element, value_method), option_html_attributes(element)]
end
Run Code Online (Sandbox Code Playgroud)
现在你不及格的集合,这就是为什么你的错误,告诉你有没有方法map的nil对象。
如文档中所述,方法定义需要第二个参数,即集合:
collection_select(方法,集合,value_method,text_method,选项={},html_options={})
您应该像在form.collection_select(:type_id, Type.all, :id, :name).