ruby-on-rails - 未定义的方法 `each' 为 "#<Complaigns::ActiveRecord_Relation:0x00000003cfb4c8>":String

标签 ruby-on-rails ruby ruby-on-rails-4

我有一个名为 Complaign 的模型,它具有一些其他属性以及投诉日期 (c_date)。

ComplaignController 中,我有一个 index View ,它显示所有的 complaigns。有一个从日期到日期的过滤器。过滤后,它工作正常,并正确显示在这些日期触发的投诉。

现在我希望将此查询的结果传递给不同的方法,比如导出方法。

我想从索引 View 中传递它,因为它存储在 @complaigns 中。

这是我的索引方法:

def index
        if params[:from] && params[:to]
            from = params[:from].to_date
            to = params[:to].to_date
            @complaigns = Complaigns.where(:c_date => from..to)
        else    
      @complaigns = Complaigns.all
        end    
  end

在索引 View 中,我是这样写的

<%= link_to "Export", {:controller => "complaigns", :action => "export", :complaigns => @complaigns}%>

这是导出方法

def export
         @complaigns = params[:complaigns]
  end

现在,在导出 View 中,当我执行以下行时:

@complaigns.each,我收到这个错误--

undefined method `each' for "#<Complaign::ActiveRecord_Relation:0x00000003cfb4c8>":String

现在这是因为,我认为,String 类中没有方法each。有什么办法,我可以在方法 export 中将 String 转换为 Complaign 类型,或者在从索引 View 传递它时,将它作为 Complaign 对象而不是 String 传递?还有其他方法吗?

最佳答案

Controller 参数中不能直接传递Ruby on Rails模型对象,可以传递它们对应的id,然后从数据库中加载模型。 HTTP/Ruby on Rails 是无状态的。如果您总是在导出前转到索引,解决此问题的一种方法可能是:

<%= link_to "Export", {:controller => "complaigns", :action => "export", :complaigns => @complaigns.map(&:id)}%>

def export
         @complaigns = Complaigns.find(params[:complaigns])
end

关于ruby-on-rails - 未定义的方法 `each' 为 "#<Complaigns::ActiveRecord_Relation:0x00000003cfb4c8>":String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31447539/

相关文章:

ruby-on-rails - 为什么在安装 Rails 时出现 OpenSSL::SSL::SSLError?

ruby-on-rails - Nginx 上的 SSL 导致重定向循环

ruby-on-rails - 如何以编程方式管理 Rails 2.3.x i18n 语言环境?

ruby - 如何运行所有带警告的 Ruby 脚本?

css - Sass 中的这个错误是什么意思? "Illegal nesting: Only properties may be nested beneath properties."

ruby-on-rails - 如何在事件记录中编写子查询?

ruby-on-rails - Rails 生成 Controller 给我加载错误

ruby-on-rails - Rails 作用域 where 子句在哈希中查找嵌套数组值

javascript - 如何在 Rails 4 中将 javascript_include_tag 与 js.erb 文件一起使用?

ruby-on-rails - Rails 如何在开发模式和生产模式之间切换?