2

我有一个带有 Bootstrap 模式的 Rails 应用程序。

以下是启动模式的部分代码:

  <a type="button" class="btn" href="#labor_modal" data-toggle="modal" data-woid= <%= workorder.id %>><i class="icon-time"></i></a>

以下是模态代码的一部分:

<div class="modal fade" id="labor_modal">
  <div class="modal-header">
    <a class="close" data-dismiss="modal">&times;</a>
  <h3>Add Labor</h3>
  </div>
  <div class="modal-body">
    <%= simple_form_for(Event.new, validate: true, remote: true, html: {"data-type" => :json}) do |f| %>
    <%= f.hidden_field :workorder_id, :value => data-woid.val() %>

我想将工作 order.id 传递给模态,以便可以将其保存在新记录中。

此代码不起作用:

<%= f.hidden_field :workorder_id, :value => data-woid.val()

任何帮助,将不胜感激 !!

PS - 我希望我可以在没有 jquery 的情况下做到这一点 - 但是,如果我需要它,就这样吧。

4

2 回答 2

0

<%= %>是一个 ERb(嵌入式 Ruby)标签。里面应该是 Ruby 代码。

data-woid.val() 

在您使用它的上下文中不是有效的 Ruby。

ERb 在呈现 HTML 之前被处理。在处理 ERb 时,Ruby 不知道 DOM 或呈现的 HTML 元素或其属性。无法通过 ERb 读取 Ruby 中的 HTML 数据属性。您必须在页面呈现并构建 DOM 后访问它们。为此使用 JavaScript/jQuery。

我猜这work_order.id将用于设置关联。将其暴露给用户是不安全的;在提交之前可以将值更改为任何值。应该在控制器中设置关联,特别是create调用之前的操作save

于 2013-01-18T22:34:30.870 回答
0

好吧,这个问题没有 javascript。我的答案可能不适用于每种情况或完美地回答问题,而且它不会扩展,但它不使用 javascript!

所以我要做的是根据参数创建尽可能多的模态。我会通过为他们分配不同的ID来做到这一点。这可以在轨道上动态完成。

Then each link would open (reveal) its matching modal, and it would seem like a parameter was sent, because each modal would have the necessary information, set at render time.

于 2015-09-26T16:59:33.860 回答