我觉得我很近但有些不对劲。我得到了未定义的方法'每个'在我的节目页面。
我的节目有以下内容:
<dl>
<dt>Name:</dt>
<dd><%= @region.name %></dd>
<dt>Location</dt>
<dd><%= @region.each do |region| %>
<%= region.location.name %>
<% end %> </dd>
</dl>
在我的区域控制器中,我有以下内容:
class Admin::RegionsController < Admin::ApplicationController
belongs_to_app :regions
add_breadcrumb 'Regions', :admin_regions_path
before_action :load_region, only: [:show, :edit, :update, :destroy]
def index
@regions = Region.ordered.paginate(page: params[:page])
@regions = @regions.search(params[:search]) if params[:search]
respond_with @regions
end
def show
respond_with @region
end
def new
@region = Region.new
respond_with @region
end
def create
@region = Region.new(region_params)
flash[:notice] = 'Region created successfully' if @region.save
respond_with @region, location: admin_regions_path
end
def edit
respond_with @region
end
def update
flash[:notice] = 'Region updated successfully' if @region.update_attributes(region_params)
respond_with @region, location: admin_regions_path
end
def destroy
flash[:notice] = 'Region deleted successfully' if @region.destroy
respond_with @region, location: admin_regions_path
end
private
def load_region
@region = Region.find_by!(id: params[:id])
end
def region_params
params.require(:region).permit(:name, location_ids:[])
end
end
我尝试将我的位置控制器更新为:
def show
@region = Region.find(params[:region_d])
@location = @region.location
end
我最终得到了完全相同的未定义方法问题。我错过了一些太明显的东西,应该允许我拉出位置名称进行展示吗?
最终我只是看到类似的东西:
地区:一 地点:Alpha,Beta,Gamma
可能需要在生成的值之间插入一些内容,但这是一个不同的问题。
答案 0 :(得分:3)
我在显示页面中显示未定义的'each'方法
[我在我的show方法中设置
@region
并且]我最终得到了完全相同的未定义方法问题
仔细查看错误消息。它是undefined method each for #<Region:1234>:Region
(或类似的东西),不是吗?
@region
的值不是集合,因此不知道方法.each
。要避免此错误,请在相应的集合上调用.each
(您应用中可能存在的任何内容。似乎是@region.locations
)
答案 1 :(得分:1)
您需要将视图更改为
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<body>
<h2>Alphaba Resume - Long version</h2>
<xsl:for-each select="alphabafictional_resume/objective">
<h2><xsl:value-of select="objective"/></h2>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
@region是单个实例,而不是数组,因此您无法在其上使用<dd>
<%= @region.locations.each do |location| %>
<%= location.name %>
<% end %>
</dd>
答案 2 :(得分:1)
所以Vasilisa给出了这个特定实例的正确答案,Sergio教我了解错过的内容/操作方式。但我想发布一个我最终使用的答案,让Vasilisa的回应更进一步,以达到我发布的预期结果。
<dd>
<%= @region.locations.map(&:name).join(', ') %>
</dd>