0

我已经发布了一个类似的问题,但我被告知自己尝试解决它并在这里发布我到目前为止所拥有的内容。

我正在做的是调用一些 xmlrpc 方法从外部应用程序中提取一些数据。

到目前为止我能做的是显示一个简单数组中的内容,如下所示。

<%  @attachment.each do |att| %>
<div class="item">
    <%= image_tag att %>         
</div>

我想要的是能够传递一个类似于这样的哈希数组:

 {id:"1", content:"somedataaa", imgurl:"someurl.com/image.jpg"}

我想要的是当用户单击图像以将 id 传递给控制器​​方法时,这样我就可以使用提供的 id 获取更多数据并提供另一个视图。

 <%  @hasharray.each do |att| %>
    <div class="item">      
     <%= att.id %> //this could be hidden an only used to pass the id to a method
    <%= image_tag att.url %> //add a link_to here somehow to route to a method on the controller.        
    </div>

我知道如何使用 rails 模型数据执行此操作,但由于这些数据来自外部 xmlrpc,我必须将其作为哈希数组传递。

您能否指导我如何执行此操作,这是正确的方法,还是我可以解析哈希数组并以某种方式将其保存到 Rails 模型中,以便我可以正常使用视图并访问路由。

4

2 回答 2

1

You can just pass the hash instead of a model, and us att[:id] instead of att.id.

If you really need it to be a model instead of a hash, you can look at Hashie, which provides several methods to convert a hash to a model: https://github.com/intridea/hashie

于 2012-08-02T05:50:45.757 回答
1
attachments = [{ :id => 1, :url => 'images/1.jpg' }, { :id => 2, :url => 'images/2.jpg' }]

attachments.each do |attachment|

  link_to image_tag(attachment[:url]), "/path/to/controller/#{attachment[:id]}/show"

end

旁注:请遵循正确的命名约定。不要将变量命名为“hasharray”或“hash”或“array”或类似的名称。让它们有意义。请。

阅读本文会有所帮助:http ://www.ruby-doc.org/core-1.9.3/Hash.html

于 2012-08-02T06:02:19.613 回答