-2

私はcontrolloerを書きます

class NotificationsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @notification = current_user.notification
    if @notification.unread == 0
      redirect_to root_path
    else
      @notification.unread == 0
      @notification.save
    end
  end
end

@notification.unreadインデックスページを表示した後は0になると思いますが、実際には機能しません。 これらのコードを変更して正しく機能させる方法。

あなたが私を助けてくれてありがとうございます:)

4

4 に答える 4

2

@notification.unread = 0代わりに使用してみてください@notification.unread == 0

于 2013-03-25T15:23:42.910 に答える
2

あなたが何をしようとしているのか完全には理解できませんが、==を2回呼び出しています。これは比較演算子です。2番目のセクションでは値を設定したいので、=のみを使用する必要があります。

このような

class NotificationsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @notification = current_user.notification
    if @notification.unread == 0
      redirect_to root_path
    else
      @notification.unread = 0
      @notification.save
    end
  end
end
于 2013-03-25T15:24:58.873 に答える
0
   else
      @notification.unread = 0
      @notification.save
    end

@ notification.unread==0は属性の値を変更しません。:)

于 2013-03-25T15:23:45.383 に答える
0

ビジネスロジックをモデルに移行することは常に良い考えです。したがって、これを次のように書くことができます。

class Notification < ActiveRecord::Base

  def unread?
    unread == 0
  end

end

class NotificationsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @notification = current_user.notification
    @notification.unread? ? (@notification.update_attributes("unread", 0) : (redirect_to root_path))
  end
end
于 2013-03-25T15:29:47.993 に答える