Rails4如何在控制器内传递变量

时间:2015-12-11 14:16:11

标签: ruby-on-rails

我在Rails 4应用中使用Ransack来搜索索引列表中的记录。

然后我在该索引列表上有一个按钮,链接到得分图页面。

我想使用scores graph中索引的@scores。

以下是分数控制器:

def index
  @search = current_user.scores.notarchived.search(params[:q])
  @scores = @search.result
end

def scoresgraph
  @scores = params[:scores]
end

这是索引页面中的按钮:

<%= link_to 'Graph', scores_scoresgraph_path(:scores => @scores), :class => 'btn btn-xs btn-primary' %>

但是,我得到了:未定义的方法`order&#39; for&#34; #Score :: ActiveRecord_AssociationRelation:0x007fb5bdbf9a08&#34;:String

1 个答案:

答案 0 :(得分:0)

您应该将索引内部的内容提取到一个单独的方法中:

def index
  @scores = score
end

def scoresgraph
  @scores = score
end

private

def search
  @search ||= current_user.scores.notarchived.search(params[:q])
end

def score
  search.result
end

如果这不起作用,可能是因为在scoregraph中你没有引用旧变量,所以你应该将link_to更改为:

<%= link_to 'Graph', scores_scoresgraph_path(q: 'same q as the index'), :class => 'btn btn-xs btn-primary' %>