2012-06-02 4 views
2

Я хочу передать хэш из моего контроллера в массив JS, но он может работать. Это то, что я делаю: В контроллере:Некоторые проблемы с использованием JQCloud в рельсах

@tag_cloud = []  
@tag_cloud[0] = {} 
@tag_cloud[0]["text"]="Lorem" 
@tag_cloud[0]["weight"]=15 
.....  

Ввиду:

var word_list =<%[email protected]_cloud.to_json%> 
$(function() { 
    $("#my_tag_cloud").jQCloud(word_list); 
}); 

Я не понимаю, почему не JSON может загрузить в word_list

+0

Я думаю, что последние два вопроса решены в моей программе. –

ответ

1

jQCloud работает с атрибутами downcase , Например, «текст», «ссылка», но не «текст», «ссылка» и т. Д.

1

Использование

var word_list =<%= raw @tag_cloud.to_json%> 

для предотвращения побега котировки в &quot;

0

Как я не мог найти минимальную рабочие рельсы версии в другом месте:

Я предполагаю, что вы следовали installation instructions.

Для того, чтобы жемчужина JQCloud использовала свою магию, удобный формат представляет собой массив хэшей. Обычно мы строим это в модели, чтобы держать контроллер тонким, но ради показа минимальных демо, вы можете поместить следующее определение в действие контроллера:

@tag_cloud = [ 
    { text: "test", weight: 15}, 
    { text: "Ipsum", weight: 9, link: "http://jquery.com/"}, 
    { text: "Dolor", weight: 6, html: {title: "I can haz any html attribute"}}, 
    { text: "Sit", weight: 7}, {text: "Amet", weight: 5} 
] 

Теперь в вашем соответствующем представлении, добавьте

<script type="text/javascript"> 
    var word_array = <%= raw @tag_cloud.to_json %> ; 
    $(function() { 
    // When DOM is ready, select the container element and call 
    // the jQCloud method, passing the array of words as the first argument. 
    $("#example").jQCloud(word_array); 
    }); 
</script> 

<div id="example" style="width: 550px; height: 350px;"></div> 

... и вы должны увидеть слово облако.