#ruby-on-rails #ruby #hash #view
#ruby-on-rails #ruby #хэш #Вид
Вопрос:
я просто не понимаю, где я сделал неправильно. пожалуйста, выделите их для меня. Я тестирую график с использованием gruff.
в ReportController
def mygruff
@gr = Hash.new
@gr["jan"] = 3
@gr["feb"] = 6
logger.info({#@gr.keys})
end
в моем журнале я получил ‘janfeb’
в представлении mygruff
<%if @gr.blank?%>
<%=No gruff%>
<%else%>
<%=@gr.keys%>
<%end%>
Я не получу грубости на своей странице gruff.
Но я получаю это в своем журнале.
Я пытался
object.empty?
true
object.blank?
true
object.nil?
false
как получить хэш, на мой взгляд?
пожалуйста, покажите мне способ.Спасибо.
def stat2
@cus_t = Hash.new
a = Gruff::Bar.new('500x350')
a.theme = {
:colors => ['#138F6A','#330000','#0aaafd','#FF0000','#00CD00','#ff6602', '#3bb003', '#1e90af', '#efba30', '#0aaaac'],
:marker_color => '#aaa',
:background_colors => ['#eaeaea', '#fff']
}
a.hide_title = true
@customer = Customer.find(:all)
@customer.each do |custs|
@g_cus = Casedf.count(:all, :conditions=> "customer_id=" custs.id.to_s)
a.data(custs.companyname, @g_cus)
#@cus_t[custs.companyname] = @g_cus
@cus_t.store(custs.companyname,@g_cus)
end
a.write("#{RAILS_ROOT}/public/images/customer.png")
$logger.info("hash keys #{@cus_t.keys}")
end # end def
Вот что я сделал на мой взгляд:
<table>
<% if @cus_t.nil?%>
<tr>
<td colspan="6">No cus added so far<%=@cus_t.keys%>l</td>
</tr>
<%else%>
<tr>
<td><%=@cus_t.keys%></td>
</tr>
<%end%>
</table>
Итак, когда я перехожу на страницу stat2, я ничего не получаю, но в моих журналах ключи распечатаны. Я в тупике, пожалуйста, помогите.
Комментарии:
1. Почему вы создаете хэш таким образом? Это вернет nil в версии 1.8.7 и синтаксическую ошибку в версии 1.9.2
@gr = {"jan" => 3, "feb" => 6}
Вместо nil будет возвращено false, потому что вы, по крайней мере, создали хэш, но не заполнили его. Попробуйте это в irb. Вам понадобится@gr.store("arg","arg")
, чтобы заставить его работать.2. да, я использую 1.8.7. я просто перехожу по ссылке .на самом деле это ‘=’ не ‘=>’.
3. кейли, я сделал то, что ты сказал. но все равно я ничего не получаю на своей странице gruff.ура… что я сделал не так…
Ответ №1:
Привет, есть ли у вас в вашем действии
def mygruff
@gr = Hash.new
@gr["jan"] = 3
@gr["feb"] = 6
logger.info({#@gr.keys})
end
это было непонятно для меня из комментария
Ответ №2:
В Ruby у хэшей нет blank?
метода. Этот метод добавлен Rails, и в нем может быть ошибка. Пожалуйста, попробуйте это на ваш взгляд:
<% if @gr.empty? %>
No gruff
<% end %>
<%= @gr.inspect %> <!-- print regardless to see if there is data there -->
Комментарии:
1. спасибо, Дэвид. я сделал то, что вы предложили. и я получаю этот вывод: пока не добавлено ни одного cus {} …. я предполагаю, что он пустой. но в контроллере, я распечатываю @gr, я получаю значения. почему он не разобрался в своем представлении?