0

幫手我已經在我看來,下面的API調用,我重用了很多:的Rails鑑於

<%@products.each do |product|%> 
     <% url_raw = URI.parse("url=#{product.wmt_id}") %> 
     <% url = Net::HTTP.get_response(url_raw).body %> 
     <% if url.empty? %> 
      <% @title   = "Product Unavailable via API" %> 
      <% @url   = "Product Unavailable via API" %> 
      <% @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%> 

什麼是幹起來我的代碼的最有效的方法我定義這是一個方法,這樣我就可以重新使用它。如果我在3個獨立的視圖文件中使用它,該代碼應放在哪裏?

+0

像你說的,在幫手? 'app/helpers /'.. – pduersteler 2013-02-20 21:51:24

回答

0

如果在同一個控制器上使用此功能,請查看app/helpers/products_helper.rb(如果您的控制器命名有所不同,請將產品替換爲您的控制器名稱)。

如果在許多控制器上使用它,它屬於app/helpers/application_helper.rb,以便所有視圖都可以訪問它。

我懷疑你可以顯着減少你對實例變量的使用,並且代碼在助手中顯着更清晰。我會建議加載這個數據在控制器而不是在視圖或助手。這樣,視圖只是使用它提供的信息,而不是導致重複的api調用。這種急加載對你的情況來說可能是不切實際的,但至少不應該這樣認爲。