Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将动态变量传递给partial以在模式中进行渲染_Ruby On Rails_Modal Dialog_Twitter Bootstrap 3_Local Variables_Dynamic Variables - Fatal编程技术网

Ruby on rails 将动态变量传递给partial以在模式中进行渲染

Ruby on rails 将动态变量传递给partial以在模式中进行渲染,ruby-on-rails,modal-dialog,twitter-bootstrap-3,local-variables,dynamic-variables,Ruby On Rails,Modal Dialog,Twitter Bootstrap 3,Local Variables,Dynamic Variables,我在一个partial上有以下代码,它动态地生成一个与pin相关联的步骤列表。管脚和台阶都有图像。用户可以向pin添加多个步骤,然后此视图动态生成这些步骤的视图。对于每个步骤,都有相关的图像,我想作为模式弹出。挑战在于,我不断遇到以下错误: “未定义的局部变量或#的'step'方法” 当我删除渲染部分时,模式基本上是空白的,但可以工作。你知道我该怎么做吗 <div class="col-md-6"> <% (0..(Step.where("pin_id = ?",

我在一个partial上有以下代码,它动态地生成一个与pin相关联的步骤列表。管脚和台阶都有图像。用户可以向pin添加多个步骤,然后此视图动态生成这些步骤的视图。对于每个步骤,都有相关的图像,我想作为模式弹出。挑战在于,我不断遇到以下错误:

“未定义的局部变量或#的'step'方法”

当我删除渲染部分时,模式基本上是空白的,但可以工作。你知道我该怎么做吗

<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>    

    @pin.id)do%> 编辑 | 删除 | 步骤。其中(“pin_id=?”,参数[:id])。获取(步骤),:pin_id=>@pin.id)do%> 添加 |
步骤


我不明白你在这里想做什么


循环

正如在评论中提到的,您已经有了一个循环来完成您的步骤。但是,在循环之外,您希望显示部分

解决问题的方法是设置一个实例变量(不需要),或者使用另一个实例变量。我会这样做:

#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 } %>
#app/controllers/steps_controller.rb
def动作
@步骤={}
结束
#app/views/steps/action.html.erb
'pins/step_images',:locals=>{:step=>@step}%>

为您提供一些重构:

<% 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 %>

|  
()

您可以发布
步骤
模型代码吗?模态体内的变量步骤实际上不可用…您已经在循环外编写了它。我可以将| Step |变量保存在循环内的某个位置,以便模态可以使用它吗?Rich,谢谢。现在我完全明白你的意思了。此代码位于url所在的pin页上。所以我想做的是让每一步都有一个弹出模式的图像|正如你可能理解的那样,步骤可能就是“我”。因此,我想做的是显示pin页面上每个步骤关联的图像数量,但当您单击指向模式的链接时,会显示部分中包含的代码中的所有图像。我完全同意创建一个实例变量并不理想(尽管老实说,我不知道这是什么)。难道你不能传递
@pin.images
对象吗?这将带回与pin关联的所有图像,感谢您的后续操作。让我再解释一下。这可能是一个架构问题——我对编码仍然很陌生。引脚有多个图像。步骤有多个图像。台阶属于大头针。在pin页面上,我显示了所有pin图像和所有步骤。我不想显示步骤图像,否则布局将受到影响。我想把它们放在一个模型里。步骤是在我发布的页面上动态生成的,因为没有与pin关联的设置编号。我看到模态是如何在循环之外增加挑战的。我想我需要“onclick”的一些javascript类型,但我不知道所有这些。谢谢你的帮助!关于它在循环之外的注释是正确的。需要将模态放入循环中。下一个问题是控件正在更改基础页面上的单独模式。。。哦,编码的乐趣。