在rails 4

时间:2016-02-17 12:42:13

标签: ruby-on-rails link-to

我正在尝试在一系列link_to链接中设置变量,以便每个链接都与一个值相关联。

在一个页面上,我有一个循环,它从我的数据库中的值创建一个链接列表:

<ul>
  <% @alldata.each do |x| %>
    <li><%= link_to "#{x.name}", charts_path %></li>
  <% end %>
</ul>

charts_path链接到显示chartkick图的视图:

<%= line_chart @data.group("year").sum("magnitude") %>

从控制器获取数据:

def graphdata(x)
  @data = Model.all.where(name: x).select("magnitude, year")
end

def charts(?variable)
  @data = graphdata(?variable)
end

我想改变我的列表循环,将?变量设置为x.name。例如:

<li><%= link_to "#{x.name}", charts_path, ?variable = "#{x.name}" %></li>

这样我就有了一个链接列表,可以通过特定于该链接的数据路由到不同的图表。

我可以为每个名称定义一个特定的视图:

def chart1
  @data = graphdata("name1")
end

def chart2
  @data = graphdata("name2")
end 

但这似乎是非常糟糕的编程...

如果这个问题很糟糕,我很抱歉,我对编程非常陌生。

非常感谢任何帮助!

谢谢

3 个答案:

答案 0 :(得分:2)

尝试使用此代码。

<%= link_to "#{x.name}", charts_path(x.name) %>

答案 1 :(得分:0)

如果我理解正确,您希望将x的名称作为查询字符串变量传递。您可以使用charts_path帮助程序轻松完成此操作:

<%= link_to "#{x.name}", charts_path(variable: x.name) %>

charts_path接受将随请求一起传递的哈希

答案 2 :(得分:0)

我遇到了类似的状态,我的模块使用以下方法工作

`<%= link_to n.subject, notifications_message_path(notification_id: n.id)%>`