如何将数据从rails中的控制器传递给模态?
Posted
技术标签:
【中文标题】如何将数据从rails中的控制器传递给模态?【英文标题】:How to pass data to modal from controller in 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" ×
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" cellspacing="0"
thead
tr
th Project Users
tbody
- projects.each do |project|
tr
td = project.name
【问题讨论】:
【参考方案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这个问题吗? 你混淆了projects
和project
吗?看起来您只在控制器中定义了@project
。所以也许locals: project: @project
然后在erb 部分中使用project
。 @Emu 还指出部分名称 可能 需要以 _
为前缀【参考方案2】:
$('#hours_approved').html("<%= j render partial: 'hours_approved_modal', projects: @projects %>");
现在,在您的 modal 内部,有一个 projects
变量,其中包含 @projects
的数据
另外,请将您的 hours_approved_modal.html.slim
文件重命名为 _hours_approved_modal.html.slim
,并在前面加上 _
。否则,它不会被识别为部分。
【讨论】:
以上是关于如何将数据从rails中的控制器传递给模态?的主要内容,如果未能解决你的问题,请参考以下文章
如何将对对象的引用传递给包含在导航控制器中的模态呈现的视图控制器?