使用帮助器将哈希从控制器返回到视图

时间:2011-01-30 10:52:49

标签: ruby-on-rails ruby

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

在使用控制器中的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

2 个答案:

答案 0 :(得分:2)

puts可能是一个错误,你真的不想在Web服务中打印出标准版。看看这是否有效?

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

答案 1 :(得分: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>