ruby-on-rails - 零参数值导致崩溃。如果我设置的值存在,我如何只创建一个参数?

标签 ruby-on-rails ruby ruby-on-rails-4 link-to

这是我的代码:

 <% @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/

相关文章:

ruby-on-rails - Rails不需要在 Controller 中定义索引方法吗?

ruby-on-rails - Rails ActiveModel::ForbiddenAttributesError 设计,Omniauth

python - 通过 XPath 解析 HTML

ruby-on-rails - 类型为 GIN 或 GiST 的 Rails 4 pgsql add_index

sorting - Ransack gem - 不区分大小写的排序(Rails 4)

ruby-on-rails - 我可以将 rspec --format 文档设置为默认值吗?

ruby-on-rails - 当我访问 Controller 中的不同操作时,实例变量会重置吗?

ruby-on-rails - ( rails )通过“index”页面就地编辑属性

ruby-on-rails - 为什么太阳黑子会更改搜索 DSL block 中的 `self`?

ruby-on-rails - 如何判断字符串中是否包含阿拉伯符号?