在我的控制器的预览操作中,我有
@models = Model.all
在视图中,我试图遍历所有模型,绘制出相关的图像,并使用它们链接到自己的配置文件。
<% @models.each do |m| %>
<div> <%= link_to(image_tag (m.avatar.url(:thumb)), model_path())%> </div>
<% end %>
我需要将每个模型的id传递给路线。使用m.id不起作用,因为路由期望哈希。
不完全确定如何做到这一点。 SO上的其他帖子指的是未保存的实例等,与此无关。
答案 0 :(得分:2)
尝试更改您的视图代码:
<% @models.each do |m| %>
<div> <%= link_to(image_tag (m.avatar.url(:thumb)), model_path())%> </div>
<% end %>
要:
<% @models.each do |m| %>
<div> <%= link_to(image_tag(m.avatar.url(:thumb)), model_path(m))%> </div>
<% end %>
答案 1 :(得分:0)
像往常一样,错误可能在一个完全不同的地方 - 你的括号。
model_path
可以接受属性列表和哈希。很可能您认为由于错误消息(您应该包含在问题中)而期望哈希。实际上,您将路径传递到image_tag
,而不是link_to
:
link_to(image_tag (m.avatar.url(:thumb)), model_path())
被解析为
link_to( image_tag(m.avatar.url(:thumb), model_path()) )
虽然:
link_to(image_tag (m.avatar.url(:thumb)), model_path())
被解析为
link_to( image_tag(m.avatar.url(:thumb)), model_path() )
方法名称和括号之间的这个空格是一个无声杀手。它是image_tag
,期望在第二个参数中使用哈希。 :)
话虽如此 - 它仍然不起作用,但你现在应该得到一个不同的问题。