【问题标题】:undefined method 'name' in nil:NilClassnil:NilClass 中未定义的方法“名称”
【发布时间】:2016-04-25 12:44:01
【问题描述】:

因此,我们目前正在为一位重要客户开发一个网站,但我们遇到了阻碍进一步发展的障碍。我们正在处理数据库表之间的关系,其中一个表无法识别上述命名方法。代码如下:

organizers_controller.rb:

  # GET /organizers.json
def index
  @organizers = Organizer.all
end

# GET /organizers/1
# GET /organizers/1.json
def show
end

# GET /organizers/new
def new
  @organizer = Organizer.new
end

# GET /organizers/1/edit
  def edit
end

# POST /organizers
# POST /organizers.json
def create
  @organizer = Organizer.new(organizer_params)

respond_to do |format|
  if @organizer.save
    format.html { redirect_to @organizer, notice: 'Organizer was successfully created.' }
    format.json { render :show, status: :created, location: @organizer }
  else
    format.html { render :new }
    format.json { render json: @organizer.errors, status: :unprocessable_entity }
  end
end
end

# PATCH/PUT /organizers/1
# PATCH/PUT /organizers/1.json
def update
  respond_to do |format|
    if @organizer.update(organizer_params)
      format.html { redirect_to @organizer, notice: 'Organizer was successfully updated.' }
    format.json { render :show, status: :ok, location: @organizer }
  else
    format.html { render :edit }
    format.json { render json: @organizer.errors, status: :unprocessable_entity }
  end
end
end

# DELETE /organizers/1
# DELETE /organizers/1.json
def destroy
  @organizer.destroy
  respond_to do |format|
    format.html { redirect_to organizers_url, notice: 'Organizer was successfully destroyed.' }
  format.json { head :no_content }
end
end

private
  # Use callbacks to share common setup or constraints between actions.
  def set_organizer
    @organizer = Organizer.find(params[:id])
  end

# Never trust parameters from the scary internet, only allow the white list through.
def organizer_params
  params.require(:organizer).permit(:name)
end
end

show.html.erb:

<p id="notice"><%= notice %></p>

<p>
  <strong>Title:</strong>
  <%= @event.title %>
  <strong>Organization</strong>
  <%= @organizer.name %>
</p>

<%= link_to 'Edit', edit_event_path(@event) %> |
<%= link_to 'Back', events_path %>

相关错误:

undefined method `name' for nil:NilClass

请原谅间距问题,代码没有很好地转换为代码块

【问题讨论】:

  • @organizer 为 nil,因此您收到此错误。
  • 您确定错误信息正确吗?我宁愿期待“未定义的方法title”,因为您似乎设置了@organizer 实例变量,但未设置@event 实例变量。
  • 从哪里获得@event。
  • 请显示调用 set_organizer 的位置。这可能是问题的根源。它应该在文件的顶部

标签: ruby-on-rails many-to-many


【解决方案1】:

如果您注释掉 Organizer.title 行。看看你是否得到其他错误。它会让你走上正确的轨道。也进入控制台并弄乱关系。你没有发布关系,所以很难知道。像event.organizer.name 这样的东西可能是必要的。

【讨论】:

    【解决方案2】:

    所以,在与同事交谈后,我找到了问题的答案。奇怪的是,这是一个如此简单的答案。我只需要将 更改为:

    <% @event.organizers.each do |organizer| %>
      <%= organizer.name %>
    <% end %>
    

    这是一个多对多关系的事实以及 show 无法访问 @organizer 变量的事实。所以这个循环对于显示正确的信息是必要的。无论如何,感谢您的回复,很高兴您能抽出时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      相关资源
      最近更新 更多