2

2 つの追加の整数フィールドが:votes_upあり:votes_down、Rails アプリケーションの Microphoto モデルにあります。DBに手動で初期値を設定していません。

これは私のコントローラーにあります:

  def vote_up
    @microphoto = Microphoto.find(params[:id])
    @microphoto.update_attribute(:votes_up, @microphoto.votes_up + 1)
    redirect_to root_path
  end

  def vote_down
    @microphoto = Microphoto.find(params[:id])
    @microphoto.update_attribute(:votes_down, @microphoto.votes_down + 1)
    redirect_to root_path
  end

これは私の見解です:

<%= link_to "vote up", vote_up_microphotos_url(feed_item.id), :method => :put %> 
<%= link_to "vote down", vote_down_microphotos_url(feed_item.id), :method => :put %>

しかし、たとえば、投票リンクをクリックすると、次のエラーが表示されます。

NoMethodError in MicrophotosController#vote_up
undefined method `+' for nil:NilClass

の使い方に問題があると思いますupdate_attribute。また、私の友人は0、フィールドに設定されていない初期値が原因で問題が発生する可能性があると述べました。

更新しました

別の問題は、タイプミスに違いありませんが、見つかりません。votes_up リンクは機能し、正しくレンダリングされますが、votes_down は正しくレンダリングされません!uninitialized constant MicrophotosController::O

4

2 に答える 2

0

votes_up初期化メソッドのとの値votes_downを 0 に設定するだけで、コードは機能するはずです。データベースもデフォルト値で更新する必要がある場合があります。

于 2013-06-25T20:51:46.563 に答える