实例变量nil在一个视图中,而不是在另一个视图中

时间:2017-10-27 14:54:22

标签: ruby-on-rails ruby

我正在使用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

1 个答案:

答案 0 :(得分:2)

您的控制器中的编辑操作如何?

你也应该定义@county

def edit
  @county = County.find(params[:id])
end