[英]Rails: ruby code in javascript
我在javascript script
标记中传递红宝石代码时遇到问题
现在我有这段代码:
<script>
var offer_foto = {
slide_offer_preview_1: ['one.jpg', 'two.jpg', 'three.jpg'],
slide_offer_preview_2: ['four.jpg', 'five.jpg', 'six.jpg']
}
</script>
我的Ruby代码
<% for i in 0..@page[:proposals].count - 1 %>
<%= @page[:proposals][i][:hotels][0]['hotel_images'].map{|f| f['url']} %>
<% end %>
在JavaScript中我需要
slide_offer_preview_i: <%= @page[:proposals][i][:hotels][0]['hotel_images'].map{|f| f['url']} %>
不幸的是,我不知道如何获得它,因为我不太了解Javascript。 如果您需要更多信息,请发表评论。 谢谢!
您应该在控制器中而不是模板中执行此操作。 使逻辑远离模板。
在您的控制器中:
@slide_offer_previews = []
for i in 0..@page[:proposals].count - 1
@slide_offer_previews << @page[:proposals][i][:hotels][0]['hotel_images'].map{|f| f['url']}
end
然后在您看来:
slide_offer_preview_i: <%= @slide_offer_previews[i] %>
或者,如果@page[:proposals][i]
是一个对象,则向您的类添加一个方法:
def hotel_image_urls
self[:hotels][0]['hotel_images'].map{|f| f['url']}
end
然后在您看来:
slide_offer_preview_i: <%= @page[:proposals][i].hotel_image_urls() %>
编辑 :对不起,这甚至没有语法意义。 忽略此备用项。
我和Joe Frembach在一起,您应该在控制器中执行此操作。 但是,如果确实需要将Ruby嵌入到Javascript中,则可以通过在文件扩展名中添加.erb(file_name.js.erb)来实现,在这种情况下,您可以执行以下操作:
alert('<%= @your_embedded_variable %>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.