2
undefined method `to_sym' for nil:NilClass

このエラーは、nifty_scaffold の編集ページでのみ発生します。

これは _form.html.erb です

<% form_for @progress do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :date %><br />
    <%= f.date_select :date %>
  </p>
  <p>
    <%= f.label :description %><br />
    <%= f.text_area :description %>
  </p>
  <p>
    <%= f.label :weight %><br />
    <%= f.text_field :weight %>
  </p>
  <p>
    <%= f.label :fatpercentage %><br />
    <%= f.text_field :fatpercentage %>
  </p>
  <p>
    <%= f.label :height %><br />
    <%= f.text_field :height %>
  </p>
  <p><%= f.submit "Submit" %></p>
<% end %>

これは edit.html.erb です

 <% title "Edit Progress" %>
 <%= render :partial => 'form' %>

そして、これは私のコントローラーです:

class ProgressesController < ApplicationController
  def new
    @progress = Progress.new
  end

  def create
    @progress = Progress.new(params[:progress])
    if @progress.save
      flash[:notice] = "Successfully created progress."
      redirect_to progresses_url
    else
      render :action => 'new'
    end
  end

  def edit
    @progress = Progress.find(params[:id])
  end

  def update
    @progress = Progress.find(params[:id])
    if @progress.update_attributes(params[:progress])
      flash[:notice] = "Successfully updated progress."
      redirect_to progresses_url
    else
      render :action => 'edit'
    end
  end

  def index
    @progresses = Progress.all
  end
end

何が間違っている可能性がありますか?エラーが見つからないようです:-S。次のように思われます: - データを正しくフェッチします - 「編集ビュー」フィールドに db 値を挿入できません。

:float、:string、:date を足場のデータ型として使用しています。

完成した投稿のために、これは私のエラーです: NoMethodError in Progresses#edit

Showing app/views/progresses/edit.html.erb where line #3 raised:

undefined method `to_sym' for nil:NilClass
Extracted source (around line #3):

1: <% title "Edit Progress" %>
2: 
3: <% form_for @progress do |f| %>
4:   <%= f.error_messages %>
5:   <p>
6:     <%= f.label :date %><br />

6 行目でコードのログが終了します...

編集:routes.rbのエラーのようです。これは現在コメントされています:

 map.edit_progress "edit_progress", :controller => "progresses", :action => "edit"

コメントを外すと、インデックス ビューでもエラーが発生します。

何らかの理由で、これは「 http://127.0.0.1:3001/progresses/1/edit 」と呼ばれていますが、「http://127.0.0.1:3001/progresses/edit/1 ではありませんか? 「編集ビュー」が呼び出されているように見えますが...おそらく、これが値が入力されていない理由だと思います...

私の解決策は何ですか?

4

1 に答える 1

3

ここでは、2 段階のデバッグを提案します。

  1. 編集ビューからすべてのコードを削除し、プレーン テキストを追加してから、ブラウザーでページにアクセスし、エラーが発生するか、新しいエラーが発生するか、またはエラーが発生しないかを確認します。

  2. 新しいエラーが発生した場合は、問題の解決に役立つか、コントローラーの編集アクションで @progress を上げて、設定されているかどうかを確認するのに役立ちます

    def edit
      @progress = Progress.find(params[:id])
      raise @progress.inspect
    end
    

これらの 2 つの手順は、問題の解決に役立つ場合があります。

于 2010-02-17T04:52:01.580 に答える