Возврат хеша из контроллера в представление с помощью помощника - PullRequest
0 голосов
/ 30 января 2011

Внимание, я новичок в рельсах! Читая учебник, он попросил меня поместить хэш строковых ключей с десятичными значениями в метод действия 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

Ответы [ 2 ]

2 голосов
/ 30 января 2011

Я понимаю, что это учебное пособие, но использование помощника, который генерирует 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>
2 голосов
/ 30 января 2011

puts, вероятно, является ошибкой, вы не хотите печатать в стандарте в веб-сервисе.Посмотрите, работает ли это?

def products_tabler
  snowholder = ""
  @snow_stuff.each {|key,value| snowholder += "<tr><td>#{key}</td><td>#{value}</td><tr>"}
  return snowholder
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...