我正在尝试在一系列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
但这似乎是非常糟糕的编程...
如果这个问题很糟糕,我很抱歉,我对编程非常陌生。
非常感谢任何帮助!
谢谢
答案 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)%>`