0

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

  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 传递的,它们是。所以排除这一点......到底发生了什么?大量赞成票将不胜感激任何帮助。

4

3 回答 3

1

参数不是字符串(您的比较需要一个整数)。

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

于 2012-08-21T11:54:30.090 回答
1

我想我明白了!

你为什么访问params[@post]?这种方法的结果应该只是在@post.

于 2012-08-21T12:24:06.597 回答
1

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

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

render :text => @post.inspect

结尾

于 2012-08-21T12:26:41.723 回答