【问题标题】:Returning a hash from controller to a view using a helper使用助手将哈希从控制器返回到视图
【发布时间】:2011-01-31 04:36:22
【问题描述】:

警告我是 Rails 的新手! 在阅读教程时,它要求我将带有十进制值的字符串键的哈希值放入 products 操作方法中(我假设他们正在谈论控制器中的“def products”。

在控制器中使用 products 方法时,我是否正确放置了哈希? 关于将信息从散列放入表中,我什至需要帮助方法还是有更好的方法? 我的助手需要帮助,但没有使用 .html_safe I 正确格式化数据

这是我迄今为止在我的控制器中所拥有的:

 def products
    #hard coded as products in controller
    @stuff = {"a"=>200.00, "b"=>150.00, "c"=>100.00, "d"=>9.00, "e"=>15.00, "f"=>20.00 }
 end

这是我的 product.html.erb 文件中的内容

 <%= form_tag(products_path) do %>
 <table id="aboutus_table">
 <%= products_tabler() %>
 </table>
 <% end %>

然后是助手……它需要帮助

  def products_tabler
  snowholder = @snow_stuff.each {|key,value|puts "<tr><td>#{key}</td><td>#{value}</td><tr>"}
  return snowholder
  end

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    puts 可能是一个错误,您并不想在 Web 服务中打印到标准输出。看看这是否有效?

    def products_tabler
      snowholder = ""
      @snow_stuff.each {|key,value| snowholder += "<tr><td>#{key}</td><td>#{value}</td><tr>"}
      return snowholder
    end
    

    【讨论】:

      【解决方案2】:

      我意识到这是一个教程,但是使用发出硬编码 html 的帮助器并不能比在视图本身中包含 html 有所改进。

      在这种情况下,在视图中做这件事真的很简单:

      <table id="aboutus_table">
        <% @snow_stuff.each do |key, value| %>
        <tr>
          <td><%= key %></td><td><%= value %></td>
        </tr>
        <% end %>
      </table>
      

      如果你真的想分离行的创建,集合部分会更好。然后 Rails 为您进行迭代。当您有真实数据时使用此技术(即 ActiveRecords 而不是哈希)。

      <table id="aboutus_table">
        <%= render :partial => "row", :collection => @stuff %>
      </table>
      

      那么 _row 部分将包含:

      <tr>
        <td><%= row.name %></td><td><%= row.value %></td>
      </tr>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多