【问题标题】:How to pass arguments from Controller to a Model method in Ruby on Rails?如何将参数从控制器传递到 Ruby on Rails 中的模型方法?
【发布时间】:2012-04-20 09:32:39
【问题描述】:

我包含了一个自定义方法来格式化我的 json 数据。

我的控制器如下所示:

("def" is taken out for brevity sake)

respond_to do |format|
  format.json { render json: @user, :methods => [:follower_count(params[:id])] }
end

我的模型如下所示:

 def follower_count user_id
    User.find(user_id).friendships.count
  end

但是,这会引发语法错误,意外的 '('。

我不确定如何将参数传递给控制器​​中的 follower_count 方法。我试着用方形包裹——没有用。我试过没有括号 - 仍然不起作用。你如何传递参数?!

【问题讨论】:

    标签: ruby-on-rails methods models controllers


    【解决方案1】:

    语法错误告诉您正在尝试将符号 :follower_count 用作函数。但主要的问题是,当您在 User 类的所有实例方法中已经将 @id 提供为 @id 时,为什么还要将它传递给实例方法。

    正确的代码如下所示:

    # controller
    format.json { render json: @user, :methods => [:follower_count] }
    
    # User.rb
    def follower_count
        friendships.count
    end
    

    【讨论】:

    • 哇。 Touche - 这更容易!我想我没有意识到模型中的方法已经适用于当前用户。谢谢。
    • 但是如果我想将参数与方法名称一起传递怎么办?我想传递请求对象,因为这个对象不能通过模型​​访问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多