打印

使用check_box_tag更新出现的错误。

使用check_box_tag更新出现的错误。

我是参照http://hideto.javaeye.com/blog/108128来做的。
controller中没有任何改变:
复制内容到剪贴板
代码:
def complete  
  
   Product.update_all(["completed_at=?", Time.now], :id => params[:product_ids])  
   end  
view:
复制内容到剪贴板
代码:
<% form_tag complete_products_path, :method => :put do %>  
      
        <% for product in @incomplete_products %>  
         
        <%= check_box_tag "product_ids[]", product.id %>  
        <%= product.name %>  
         
      
        <% end %>
      <%= submit_tag "Mark as Complete", :name => nil %>  


<% end %>
model:
复制内容到剪贴板
代码:
def initialize              
  @incomplete_products = Product.find(:all, :conditions => ["completed_at is null"])
  end
可是现在执行,出现以下错误:
复制内容到剪贴板
代码:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
我想是因为我没有取到数据库中completed_at字段为null的值。可是那个查询语句我在MYSQL中都能正常使用。不知道问题是出在哪里了。请高手指点一下。。。

[ 本帖最后由 wzp2000 于 2008-7-16 11:12 编辑 ]

TOP

或许是取到值了。但是不能从model传到view吗?很迷惑。。

TOP

复制内容到剪贴板
代码:
@incomplete_products = Product.find(:all, :conditions => ["completed_at is null"])
这句话应该放到controller中去

一般在model里面没有这样申明的哦

不符合MVC的规则吧

[ 本帖最后由 alan874 于 2008-7-16 11:43 编辑 ]

TOP

一般来说 所有的业务逻辑 应该在controller中

不过model里面 如果定义2个模型之间的关系中 可以用

User model
复制内容到剪贴板
代码:
  has_many :books, :conditions => "name like '%xxx%'", :order=> "created_at DESC"
这样的话 你就可以用
复制内容到剪贴板
代码:
  @user = User.find(1)
  @books = @user.books
@books取到model里面根据条件所查询出来的内容了

具体的 还是查查相关的资料 看书的话 比我这里说的清楚很多 呵呵

TOP

回复 3# 的帖子

我放在controller中解决了问题。
不过最先我是把
复制内容到剪贴板
代码:
@incomplete_products = Product.find(:all, :conditions => ["completed_at is null"])   
放在了complete方法中:
复制内容到剪贴板
代码:
def complete  
  @incomplete_products = Product.find(:all, :conditions => ["completed_at is null"])
   
   Product.update_all(["completed_at=?", Time.now], :id => params[:product_ids])  
   end  
然后执行,还是报上面的错误。

然后我把它放在index中,就成功了。

我在想,是不是index方法先于其他任何方法被调用啊?

TOP

不是这样的

这个跟你当前的action有关系

也就是 你当前的 view

一般来说 view的名称 直接对应action的名称

[ 本帖最后由 alan874 于 2008-7-16 13:53 编辑 ]

TOP