这是我的代码:
<% @garments.each do |garment| %>
<tr>
<td>
<div>
<%= link_to "Edit", edit_adminpanel_path(
:id => garment["objectId"],
:image => garment["image"].url,
:image2 => garment["image2"].url,
:image3 => garment["image3"].url,
:image4 => garment["image4"].url,
:image5 => garment["image5"].url,
:image6 => garment["image6"].url)
%>
</div>
如您所见,我正在创建参数并使用图像的图像 url 设置它们。然而,一个对象并不总是有 6 张图像。有些可能有 2 个,有些可能有 3 个,有些甚至可能只有 1 个图像。调用 nil 属性将导致我的应用程序崩溃。
我尝试在每行末尾的逗号前添加 if 语句,但这不起作用。如何安全地检查对象图像是否存在,然后才创建并设置它对应的参数值?
最初我尝试将整个对象作为参数传递,但在我的另一个 Controller 中遇到了问题。所以现在我想单独传递图像 URL。
谢谢你的时间
最佳答案
您可以通过仅添加存在的值来动态构建它:
<% path_params = %w(image image2 image3 image4 image5 image6).each_with_object(:id => garment["objectId"]) do |name, hash|
hash[name.to_sym] = garment[name].url if garment[name]
end %>
<%= link_to "Edit", edit_adminpanel_path(path_params) %>
关于ruby-on-rails - 零参数值导致崩溃。如果我设置的值存在,我如何只创建一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191680/