-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

我希望 @notification.unread在显示索引页面后为 0。但它实际上无法工作。如何更改这些代码以使其正常工作。

希望你能帮助我,非常感谢:)

4

4 回答 4

2

尝试使用@notification.unread = 0而不是@notification.unread == 0

于 2013-03-25T15:23:42.910 回答
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 回答