我正在使用Ruby on Rails(Ruby v.2.2.8,Rails 5.1.4)开发一个项目,遇到了一个非常奇怪的问题。
对于控制器中的show方法,我有:
def show
@county = County.find(params[:id])
end
它有效。为了更新,我有。
def update
@county = County.find(params[:id])
if @county.update(county_params)
redirect_to @county
else
render 'edit'
end
end
在我的'编辑'中,我一直收到@county为零的错误。错误页面指示参数传递为:
{'id'=>4}
作为一个例子。当我从rails控制台使用find_by时,找到了该项目。
这里有什么东西我不见了吗?
ETA:查看代码
<%= form_with model: @county, local: true do |form| %>
<% if @county.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(@county.errors.count, "error") %> prohibited
this county from being saved:
</h2>
<ul>
<% @county.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= form.label :name %><br>
<%= form.text_field :name %>
</p>
<p>
<%= form.label :shortname %><br>
<%= form.text_field :shortname %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
县的ETA路线:
counties GET /counties(.:format) counties#index
POST /counties(.:format) counties#create
new_county GET /counties/new(.:format) counties#new
edit_county GET /counties/:id/edit(.:format) counties#edit
county GET /counties/:id(.:format) counties#show
PATCH /counties/:id(.:format) counties#update
PUT /counties/:id(.:format) counties#update
DELETE /counties/:id(.:format) counties#destroy
错误发生在/ counties /:id / edit
答案 0 :(得分:2)
您的控制器中的编辑操作如何?
你也应该定义@county
def edit
@county = County.find(params[:id])
end