Rails 3:Controller返回类方法nil

时间:2012-08-21 11:50:20

标签: ruby-on-rails ruby-on-rails-3 controller mongoid

所以我得到了这个类方法:

  def self.auth(id, key_code_in)
    post = Post.where(:id => id).first   
    if post.key_code == key_code_in
      post
    else
      nil
    end   
  end

它喜欢控制台:

1.9.3p194 :001 > authtest = Post.auth('5032f3254ff9fcf10100001b', 42745590875)
=> #<Post _id: 5032f3254ff9fcf10100001b, _type: nil, created_at: 2012-08...

但讨厌控制器:

  #GET posts/:id/remove_form
  def remove_form
  end

  #POST posts/:id
  def code
    @id = params[:id]
    @key = params[:destroy_code]    
    @post = Post.auth(@id, @key)

    render :text => params[@post].inspect
  end

每次都给我零。我确保从视图form_tag传递参数,它们是。因此判断......究竟是怎么回事?任何帮助都会受到过多的投票赞赏。

3 个答案:

答案 0 :(得分:1)

参数不是String(您的比较期望是整数)。

您可以使用to_i方法进行转换。

答案 1 :(得分:1)

我想我明白了!

您为什么要访问params[@post]?此方法的结果应该只在@post

答案 2 :(得分:1)

试试这个, 如果你正确使用id。

def代码     @id = params [:id] .to_i     @key = params [:destroy_code]
    @post = Post.auth(@ id,@ key)

render :text => @post.inspect