0

我正在使用 JQuery Mobile 进行标记,我注意到 application_helper.rb 中的 link_to_add_fields 不会将渲染转换为 jquery mobile 样式。这是有道理的,JQuery Mobile 在将其呈现给浏览器之前会使用其框架标记事物。但是,有没有办法解决这个问题并将其呈现在服务器端?

代码:-

_certification.html.erb
<fieldset>   
  <%= f.input :certification,:input_html=>{:class=>"string optional ui-input-text ui-body-d"} %>
     <%= link_to('#', class: "label label-inverse") do%>Remove<i class="remove-icon"></i><% end %>       
</fieldset>

_form.html.erb
 <%= f.simple_fields_for :certifications do |ed|%>
          <%= render "certifications", f: ed %>
      <% end %>  
 <%= link_to_add_fields "Add Achievement", f, :certifications,'user' %>

application_helper.rb

 def link_to_add_fields(name, f, association,controller= "")
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.simple_fields_for(association, new_object, child_index: id) do |builder|
      render(controller.to_s + '/' + association.to_s, f: builder)
    end
    link_to(name, '#', class: "btn btn-inverse", data: {id: id, fields: fields.gsub("\n", "")})
  end
4

1 回答 1

0

link_to_add_fields 是从哪里来的?它不是标准的 rails 或 jquery,IIRC。这听起来像是来自 railscast 的东西,不一定是在设计时考虑到 jquery_mobile 的。

编辑 您必须将更改通知 jquery mobile,以便它可以重新绘制页面。请参阅“增强新标记”部分中的http://jquerymobile.com/demos/1.2.0/docs/pages/page-scripting.html

增强新标记

页面插件调度一个 pageInit 事件,大多数小部件使用它来自动初始化自己。只要引用了小部件插件脚本,它就会自动增强它在页面上找到的小部件的任何实例。

但是,如果您在客户端生成新的标记或通过 Ajax 加载内容并将其注入页面,则可以触发 create 事件来处理新标记中包含的所有插件的自动初始化。这可以在任何元素(甚至是页面 div 本身)上触发,从而为您节省手动初始化每个插件(listview 按钮、选择等)的任务。

例如,如果通过 Ajax 加载了 HTML 标记块(例如登录表单),则触发 create 事件以自动将其包含的所有小部件(在本例中为输入和按钮)转换为增强版本。这种情况的代码是:

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );

于 2013-07-04T13:42:07.567 回答