【问题标题】:How to pass data to modal from controller in rails?如何将数据从rails中的控制器传递给模态?
【发布时间】:2020-12-31 04:58:54
【问题描述】:

我有一个控制器,我想将一些数据从我的控制器发送到模态。我怎样才能做到这一点? 这是我的控制器 -customers_controller.rb

def hours_approved
    @project = Project.find params[:project_id]
    respond_to do |format|
      format.js { render :file => "/customers/hours_approved.js.erb"}
    end    
  end  

hours_approved.js.erb

$('#hours_approved').html("<%= j render partial: 'hours_approved_modal' %>");
$('#hoursapproved').modal('show');

这是我的模态文件 - hours_approved_modal.html.slim

iv class="modal fade" id="hoursapproved" tabindex="-1" role="dialog" aria-hidden="true"
    div class="modal-dialog" role="document"
        div class="modal-content" style="left:-240px;"
            div class="modal-header" style="padding:0px;"
                h1 Hours Approved
                button type="button" class="close" data-dismiss="modal" aria-label="Close"
                span aria-hidden="true" &times;
           div class="modal-body"
               *i want to use here*

我想将@project 从控制器传递到我的模态“hours_approved_modal.html.slim”并使用它来获取值。我该怎么做? 编辑1:如果我在我的js文件中使用它

$('#hours_approved').html("<%= j render partial: 'hours_approved_modal', projects: @projects%>");
$('#hoursapproved').modal('show');

它给出了这个错误-

undefined local variable or method `projects' for #<#<Class:0x0055bc4c9b0998>:0x0055bc505bc180>
Did you mean?  @projects

编辑 2:这就是我想在模态体中使用的方式

div class="modal-body"
                 table class="display" width="100%" cellspacing="0"
                  thead
                    tr
                      th Project Users
                  tbody
                      - projects.each do |project|
                      tr
                        td = project.name

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

    You must use locals to pass the variable along

    render partial: 'hours_approved_modal', locals: { projects: @projects }
    

    这样您就可以在.slim 文件中以projects 访问它

    【讨论】:

    • 它给出了同样的错误:“未定义的局部变量或方法 `projects' for #:0x0055bc4eeefd80> 你的意思是?@projects”
    • 你是如何使用它的?你能edit这个问题吗?
    • 你混淆了projectsproject 吗?看起来您只在控制器中定义了@project。所以也许locals: { project: @project} 然后在erb 部分中使用project。 @Emu 还指出部分名称 可能 需要以 _ 为前缀
    【解决方案2】:

    $('#hours_approved').html("&lt;%= j render partial: 'hours_approved_modal', projects: @projects %&gt;");

    现在,在您的 modal 内部,有一个 projects 变量,其中包含 @projects 的数据

    另外,请将您的 hours_approved_modal.html.slim 文件重命名为 _hours_approved_modal.html.slim,并在前面加上 _。否则,它不会被识别为部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-30
      • 2021-04-27
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多