0

我的观点:区块轨道3

<%= form_tag(rate_url) do %> 
    <%= hidden_field_tag :prod_id, params[:product_id] %> 
    <%= hidden_field_tag :rating_set_id, params[:rating_set_id] %> 
    <span class = "heading"> Recommendations </span> 
    <div><%= submit_tag 'Submit Ratings', :class => " btn right" %></div> 
    <span id = "rate_more_link"> 
    <%= link_to "Rate More Products", products_path(:rating_set_id => params[:rating_set_id])%> 
    </span> 
    <br/> 
    <div id ="prods_container"> 
    <% @recommendations.each do |rec| %> 
    <% url_raw = URI.parse("url_to_parse") %> 
    <% url = Net::HTTP.get_response(url_raw).body %> 
    <% if url.empty? %> 
     <% @title   = "Product Unavailable via API" %> 
     <% @url   = "#{rec.wmt_id}" %> 
     <% @cover_img  = "_180X180.jpg" %> 
     <% @price   = "Product Unavailable via API" %> 
    <% else %> 
     <% begin %> 
     <% @response1 = JSON.parse(url) %> 
     <% @title   = @response1["ProductName"]%> 
     <% @url   = "{@response1["ProductUrl"]}"%> 
     <% @cover_img  = @response1["ImagePath"]%> 
     <% @price   = @response1["currentItemPrice"]%> 
     <% rescue %> 
     <% end %> 
    <% end %> 
    <div id ="prod"> 
     <span class = "radio_button"> 
     <%= hidden_field_tag "recommendation_ratings[#{rec.id}][recommendation_id]", rec.id %> 
     <%= radio_button_tag "recommendation_ratings[#{rec.id}][rating]", '3'%> Good 
     <%= radio_button_tag "recommendation_ratings[#{rec.id}][rating]", '2'%> Fair 
     <%= radio_button_tag "recommendation_ratings[#{rec.id}][rating]", '1'%> Bad 
     <%= radio_button_tag "recommendation_ratings[#{rec.id}][rating]", '0'%> N/A 
     </span> 
    <div> 
     <a href='<%= @url %>' target="_blank"> 
     <img src='<%= @cover_img %>' class='product_image_rec_table'></img> 
     </a> 
    </div> 
    <div class = "rec-desc"> 
     <div class = "small"><b>Wmt ID: </b><%= rec.wmt_id %></div> 
     <div class = "small"><b>Title: </b><%= @title %></div> 
     <div class = "small"><b>Price: </b>$<%= @price %></div> 
     <div class = "em"> 
     <b>Current Rating: </b> 
     <% rec.ratings.each do |rating_phin| %> 
      <%= rating_phin.label %> 
     <% end %></div> 
     <br/> 
     </div> 
     <div id="rec_note_text"> 
     <%= text_field_tag "recommendation_ratings[#{rec.id}][notes]", "#{rec.notes}" ,:id => "rec_note_text", :placeholder => 'Enter Notes..'%> 
     </div> 
    </div> 
    <% end %> 
    <% end %> 
</div> 

我想给<% end %>Current Rating块到端移动,这样我可以调用rating_phin变量在我text_field_tag,但是当我移动<% end %>在我看来,Current Rating块之后的所有内容都未呈现。我究竟做错了什么?在我看来,我如何在我的text_field_tag中更新rating_phin.notes而不是rec.notes

+0

现在你应该换掉最后两行。要找到损坏的部件,尝试删除一些部件,直到它开始工作,然后逐个将它们移回去。 – ck3g 2013-02-20 04:37:42

+0

这个例子通过创建一个辅助方法来管理很多这里正在进行的令人困惑的详细变量赋值,将大大有益于*。 – tadman 2013-02-20 04:38:47

回答

0

rating_phin变量只存在于each循环的范围内。

如果你需要它之​​后,你将不得不再次循环:

<div id="rec_note_text"> 
    <% rec.ratings.each do |rating_phin| %> 
    <%= text_field_tag "recommendation_ratings[#{rec.id}][notes]", "#{rec.notes}" ,:id => "rec_note_text", :placeholder => 'Enter Notes..'%> 
    <% end %> 
</div> 

我不知道你为什么会想到移动<% end %>标签是做正确的事。

如果你迷失在ERB内部,考虑到HTML可以得到多么繁琐和复杂,特别是当有Ruby在其中时,这并不是特别困难,特别是当它有活的Ruby时,你可能想要尝试HAML。它会将其减少到大约一半的行数,并删除大量的<% %>并关闭标签碎片,这些碎片往往使ERB难以阅读。

+0

像我们建议的那样在我的'text_field_tag'周围添加另一个块会导致文本字段不被渲染。 – Yogzzz 2013-02-20 04:48:42

+0

如果它在第一个循环中呈现一些东西,它应该在第二种情况下呈现。如果没有,也许别的东西坏了。 – tadman 2013-02-20 04:57:16

+0

谢谢你的帮助!如果我只是在'text_field_tag'周围添加块,即使不调用变量,也会导致文本字段标记不被渲染。 – Yogzzz 2013-02-20 05:02:27