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