Ruby on rails 4 RubyonRails show.html.erb未定义的方法'naam';零级:零级
我是RubyonRails新手。我创建了一个用于学习的基本应用程序 创建记录时,我重定向到ShowAction并获得一个错误:nil:NilClass的未定义方法'naam' 我做错了什么 耙路径Ruby on rails 4 RubyonRails show.html.erb未定义的方法'naam';零级:零级,ruby-on-rails-4,Ruby On Rails 4,我是RubyonRails新手。我创建了一个用于学习的基本应用程序 创建记录时,我重定向到ShowAction并获得一个错误:nil:NilClass的未定义方法'naam' 我做错了什么 耙路径 Prefix Verb URI Pattern Controller#Action welcome_index GET /welcome/index(.:format) welcome#index relaties GET
Prefix Verb URI Pattern Controller#Action
welcome_index GET /welcome/index(.:format) welcome#index
relaties GET /relaties(.:format) relaties#index
POST /relaties(.:format) relaties#create
new_relaty GET /relaties/new(.:format) relaties#new
edit_relaty GET /relaties/:id/edit(.:format) relaties#edit
relaty GET /relaties/:id(.:format) relaties#show
PATCH /relaties/:id(.:format) relaties#update
PUT /relaties/:id(.:format) relaties#update
DELETE /relaties/:id(.:format) relaties#destroy
root GET / welcome#index
relaties\u controller.rb
class RelatiesController < ApplicationController
def new
@relatie = Relatie.new
end
def create
@relatie = Relatie.new(relatie_params)
@relatie.save
redirect_to @relatie
end
private
def relatie_params
params.require(:relatie).permit(:id, :naam, :straatnaam, :huisnummer, :postcode, :plaats, :omschrijving)
end
def show
@relatie = Relatie.find(params[:id])
end
end
Rails.application.routes.draw do
get 'welcome/index'
resources :relaties
root 'welcome#index'
<p>
<strong>Naam:</strong>
<%= @relatie.naam %>
</p>
<p>
<strong>Straatnaam:</strong>
<%= @relatie.straatnaam %>
</p>
<p>
<strong>Huisnummer:</strong>
<%= @relatie.huisnummer %>
</p>
<p>
<strong>Postcode:</strong>
<%= @relatie.postcode %>
</p>
<p>
<strong>Plaats:</strong>
<%= @relatie.plaats %>
</p>
<p>
<strong>Omschrijving:</strong>
<%= @relatie.omschrijving %>
</p>
show.html.erb
class RelatiesController < ApplicationController
def new
@relatie = Relatie.new
end
def create
@relatie = Relatie.new(relatie_params)
@relatie.save
redirect_to @relatie
end
private
def relatie_params
params.require(:relatie).permit(:id, :naam, :straatnaam, :huisnummer, :postcode, :plaats, :omschrijving)
end
def show
@relatie = Relatie.find(params[:id])
end
end
Rails.application.routes.draw do
get 'welcome/index'
resources :relaties
root 'welcome#index'
<p>
<strong>Naam:</strong>
<%= @relatie.naam %>
</p>
<p>
<strong>Straatnaam:</strong>
<%= @relatie.straatnaam %>
</p>
<p>
<strong>Huisnummer:</strong>
<%= @relatie.huisnummer %>
</p>
<p>
<strong>Postcode:</strong>
<%= @relatie.postcode %>
</p>
<p>
<strong>Plaats:</strong>
<%= @relatie.plaats %>
</p>
<p>
<strong>Omschrijving:</strong>
<%= @relatie.omschrijving %>
</p>
Naam:
斯特拉特纳姆:
huisnmmer:
邮政编码:
Plaats:
Omschrijving:
查看您提供的错误,它表明对于nil:NilClass
没有naam
方法。这意味着您正在调用给定对象不存在的方法(nil)。查看您的代码,这意味着@relatie
在show
中未正确设置。也就是说,Relaties.find(params[:id])
正在返回nil
这很可能是@relatie.save
的一个错误,该错误正在失败,导致您的重定向到@relatie
以重定向到nil
。查看您的create
和rake routes
是否确定不应该使用Relaties.new
而不是Relaties.new
正如@redzagoglin所提到的,错误的来源是您的
show
是在private
标记下定义的,这意味着show
是一个私有方法,调用无法访问。因此,未设置@relatie
。只需将其移到标记上方即可解决您的问题。我不确定您遇到了什么,但当我将Relaties.new更改为Relaties.new时,在取消创建操作中,我在提交表单时会出现错误。您的显示操作必须在专用上方定义,而不是在下定义。