如何在单击链接后将局部变量发送到部分呈现
How do I send a local variable to a partial rendered only after a link is clicked?
>我有一个引导模式,当单击此链接时会触发:
<a class="plus" href="javascript:;" data-toggle="modal" data-target="#myModal"> </a>
然后我把这个放在我的_footer.html.erb
<%= render 'shared/tag_users_modal' %>
然后有这个标准的引导模式:
<!-- Modal -->
<div class="modal tagging fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Tag User</h4>
</div>
<div class="modal-body">
<%= simple_form_for @node, url: add_tagged_user_node_path(@node), method: :post do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input_field :user, label: "Users", collection: @users, as: :check_boxes, checked: @node.user_tags %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
这不起作用,因为@node
为零 - 即它没有通过。我无法从我的_footer
部分传递该变量,因此我希望能够在模态的原始执行中传递它。
我该怎么做?或者我如何以另一种方式做到这一点?
编辑 1
为了添加更多上下文,调用 Bootstrap Modal 的初始链接实际上位于另一个部分,该部分也传递了局部变量 node
。那个叫这样
: <%= 渲染部分:"共享/框",局部变量:{节点:节点} %>
但是只有在第一个shared/box
中单击切换链接后,我才需要继续执行正在触发的模态。
总结: - /shared/box
部分具有触发 BS 模态的原始链接。 - /shared/footer' contains a render of another partial
tag_users_modal .
-
/共享/tag_users_modal contains the modal, but I need the
@node object passed to it and the
add_tagged_user_node_path"工作。
现在它没有通过,因为我无法找到一种方法将原始node: node
带到链中的第三个部分。
因此,最好在分部中使用局部变量而不是实例变量。
# your main view file:
<%= render partial: path_to_partial, locals: {bool: true} %>
# your partial:
<%= bool ? 1 : 2 %>
使用这些选项,部分将显示 1。
此外,将局部变量作为locals
选项传递的替代方法是使用 render
而不是像这样render partial
:
# your main view file:
<%= render path_to_partial, bool: true %>
从上面可以推断,您必须将部分中的@node
更改为node
,并在渲染部分的任何位置指定{node: @node}
。
- 若单击按钮,则更改Javascript中的变量
- 单击“JavaScript显示变量”
- 单击按钮时填充javascript变量
- Angularjs - url params:单击时返回 url 中的角度变量
- 如何使按钮图像在单击时添加到变量中
- 未捕获的引用错误:变量未在单击函数上定义
- 如何在单击链接后将局部变量发送到部分呈现
- 如何将变量从按钮的单击传递给 javascript 代码
- 如何在用户单击提交按钮时为变量分配任意值
- 如何在jQuery中单击时重新计算变量
- 在ng中指定变量,重复ng次单击
- JavaScript变量在第二次单击事件时间后取消设置
- 将变量推送到数组中,并在每次单击时更新数组
- casperjs单击的不是选择器,而是变量
- 在单击 jQuery 事件中找不到变量
- d3.js onclick事件在单击时使用变量的值,而不是在绘制时
- 在浏览器返回/forwd 按钮单击时保存/恢复所有 JavaScript 变量
- 反应,局部缓存变量并在渲染时单击时触发
- 使用变量单击表行
- 我如何存储当前的头部颜色到一个局部变量时,单击