rails: Link_to 查找方法
rails: Link_to find-method
如何像 rails 中的数据库过滤器一样使用 link_to?
图片 --> belong_to:画廊 --> 单击画廊 --> 打开画廊所有图像的视图(不是数据库中的所有记录!)
<%= link_to 'Images of Gallery', controller: "images" %>
这是有效的,但它显示了数据库中所有可用的图片。我需要将类似下一个片段的内容添加到 link_to:
@gallery = Image.find(params[:gallery_id])
我该怎么做?
希望你定义
@gallery = Image.find(params[:gallery_id])
您的控制器正在运行。
您可以在link_to
方法中传递参数:
<%= link_to 'Images of Gallery', controller: "images", gallery_id: your_gallery_id %>
# or link should be map to show action instead of index action
<%= link_to 'Images of Gallery', controller: "images", action: "show", gallery_id: your_gallery_id %>
它允许您访问控制器中的 gallery_id
参数并找到正确的记录。
它显示了所有画廊的图像,因为您没有传递控制器可用于过滤图像的 gallery_id
,您正在点击索引操作。因此,只需修改您的 link 以显示该特定画廊的图像:
<%= link_to 'Gallery', @gallery %> or just <%= link_to @gallery %>
并且控制器显示视图应该查询图像linked 到那个特定的图库
def show
gallery = Gallery.find(params[:id])
@images = gallery.images
end
我不知道为什么两个答案都不起作用。我收到错误“没有 ID 找不到”错误。
这个解决方案完成了工作:
我在控制器中调用了一个 before_action 方法:
before_action :set_gallery, only: [:show, :edit, :update, :destroy]
在 set_gallery 方法中我把这个:
def set_gallery
@gallery = Gallery.find(params[:id])
@images = @gallery.images
end
然后我改变了link_to基本的表演动作:
<%= link_to 'Preview', gallery %>
之后我更改了 show.html.erb 并添加了图像迭代:
<% @images.each do |image| %>
... <%= image.img_url %> ...
<% end %>
我会尝试找出为什么您建议的解决方案不起作用。现在无法解释。
如何像 rails 中的数据库过滤器一样使用 link_to?
图片 --> belong_to:画廊 --> 单击画廊 --> 打开画廊所有图像的视图(不是数据库中的所有记录!)
<%= link_to 'Images of Gallery', controller: "images" %>
这是有效的,但它显示了数据库中所有可用的图片。我需要将类似下一个片段的内容添加到 link_to:
@gallery = Image.find(params[:gallery_id])
我该怎么做?
希望你定义
@gallery = Image.find(params[:gallery_id])
您的控制器正在运行。
您可以在link_to
方法中传递参数:
<%= link_to 'Images of Gallery', controller: "images", gallery_id: your_gallery_id %>
# or link should be map to show action instead of index action
<%= link_to 'Images of Gallery', controller: "images", action: "show", gallery_id: your_gallery_id %>
它允许您访问控制器中的 gallery_id
参数并找到正确的记录。
它显示了所有画廊的图像,因为您没有传递控制器可用于过滤图像的 gallery_id
,您正在点击索引操作。因此,只需修改您的 link 以显示该特定画廊的图像:
<%= link_to 'Gallery', @gallery %> or just <%= link_to @gallery %>
并且控制器显示视图应该查询图像linked 到那个特定的图库
def show
gallery = Gallery.find(params[:id])
@images = gallery.images
end
我不知道为什么两个答案都不起作用。我收到错误“没有 ID 找不到”错误。
这个解决方案完成了工作:
我在控制器中调用了一个 before_action 方法:
before_action :set_gallery, only: [:show, :edit, :update, :destroy]
在 set_gallery 方法中我把这个:
def set_gallery
@gallery = Gallery.find(params[:id])
@images = @gallery.images
end
然后我改变了link_to基本的表演动作:
<%= link_to 'Preview', gallery %>
之后我更改了 show.html.erb 并添加了图像迭代:
<% @images.each do |image| %>
... <%= image.img_url %> ...
<% end %>
我会尝试找出为什么您建议的解决方案不起作用。现在无法解释。