4

我有以下代碼部分動態生成一個引腳的關聯步驟列表。銷和步驟都有圖像。用戶可以將多個步驟添加到引腳,然後該視圖動態生成這些步驟的視圖。對於每一步都有相關的圖像(我們想要彈出作爲模式)。目前的挑戰是我不斷收到以下錯誤:傳遞動態變量以部分渲染模式

「未定義的局部變量或方法'步」爲#<#:0x00000102f498d8>」

當我踩滅了渲染部分,模態出現基本是空白,但作品。任何想法我如何做到這一點?

<div class="col-md-6"> 
     <% (0..(Step.where("pin_id = ?", params[:id]).count)-1).each do |step| %> 
      <div class="col-md-12"> 
      <div class="well"> 
       <ul class="nav pull-right"> 
       <% if current_user == @pin.user %> 
         <%= link_to edit_step_path((Step.where("pin_id = ?", params[:id]).fetch(step)), :pin_id => @pin.id) do %> 
         <span class="glyphicon glyphicon-edit"></span> 
          Edit 
         <% end %> | 
       <%= link_to Step.where("pin_id = ?", params[:id]).fetch(step), method: :delete, data: { confirm: 'Are you sure?' } do %> 
         <span class="glyphicon glyphicon-trash"></span> 
         Delete 
        <% end %> | 
        <%= link_to new_step_image_path(:step_id => Step.where("pin_id = ?", params[:id]).fetch(step), :pin_id => @pin.id) do %> 
           Add 
         <span class="glyphicon glyphicon-picture"></span> 
         <% end %> 
       <% end %> 
       <% if StepImage.where("step_id = ?", Step.where("pin_id = ?", params[:id]).pluck(:id).fetch(step)).count == 0 %> 

       <% else %> 
       | <a href="#StepImageModal" data-toggle="modal"> 
       <span class="glyphicon glyphicon-picture"></span> (<%= StepImage.where("step_id = ?", Step.where("pin_id = ?", params[:id]).pluck(:id).fetch(step)).count %>) </strong> 
       </a> 
       <% end %> 
       </ul> 
       <strong> Step <%= step+1 %>  
       <p> 
       <%= Step.where("pin_id = ?", params[:id]).pluck(:description).fetch(step) %> 
       </p> 
      </div> 
     </div> 
     <%end %> 
    </div> 

<div class="modal fade" id="StepImageModal"> 
    <div class="modal-header"> 
    <a class="close" data-dismiss="modal">&times;</a> 
    <h3>Modal Header</h3> 
    </div> 
    <div class="modal-body"> 
     <%= render :partial => 'pins/step_images', 
       :locals => { :step => step } %> 
    </div> 
    <div class="modal-footer"> 
    <a href="#" class="btn" data-dismiss="modal">Close</a> 
    </div> 
</div>  
+0

你可以張貼'Step'型號代碼? – emaillenin

+1

模態體內部的變量步驟實際上並不可用...您已將它寫在循環外部 –

+0

可以保存| step |變量在循環內的某個地方變化,以便它可用於模態? – user3313516

回答

0

我不明白你試圖在這裏


做循環

正如在評論中提到的,你已經有了一個循環穿過你的腳步。但是,在循環外部,您想要顯示部分

解決您的問題的方法是設置實例變量(不需要)或使用另一個persistent data type。我應該這樣做:

#app/controllers/steps_controller.rb 
def action 
    @step = {} 
end 

#app/views/steps/action.html.erb 
<% (0..(Step.where("pin_id = ?", params[:id]).count)-1).each do |step| %> 
    <% @step[step.id.to_sym] = step.details %> 
<% end %> 

<%= render :partial => 'pins/step_images', :locals => { :step => @step } %> 

unless

一些重構你:

<% unless StepImage.where("step_id = ?", Step.where("pin_id = ?", params[:id]).pluck(:id).fetch(step)).count == 0 %> 
    | <%= link_to "#StepImageModal", data: { toggle: "modal"} do %> 
      <span class="glyphicon glyphicon-picture"></span>(<%= StepImage.where("step_id = ?", Step.where("pin_id = ?", params[:id]).pluck(:id).fetch(step)).count %>) </strong> 
     <% end %> 
<% end %> 
+0

富有,謝謝。現在絕對理解這個評論。此代碼位於URL爲http:// localhost:3000/pins/107的引腳頁上。所以我試圖做的是有一個與每個步驟關聯的圖像的彈出式模式。 |步驟|可以簡單地是|我|你可能會明白。所以我想要做的是顯示有多少圖片與釘頁上的每一步相關聯,但是當點擊鏈接到模態時,顯示包含在部分中的所有代碼圖片。我絕對同意創建一個實例變量是不理想的(儘管誠實我不知道那是什麼)。 – user3313516

+0

難道你不能只傳遞'@ pin.images'對象嗎?這將帶回所有圖像關聯的針 –

+0

感謝您的跟進。讓我試着解釋更多。這可能是一個架構問題 - 我對編碼還很陌生。引腳有多個圖像。步驟有多個圖像。步驟屬於引腳。在引腳頁上,我顯示所有引腳圖像和所有步驟。我不想顯示步驟圖像或佈局會受到影響。我試圖把它們放入一個模態。步驟在我發佈的頁面上動態生成,因爲沒有與鍼關聯的設置編號。我看到模態是如何在循環之外增加挑戰的。我想我需要一些類型的JavaScript的「onclick」,但不知道它 – user3313516