Rails Server在保存和重新加载后仅成功运行一个表单

时间:2014-08-03 04:02:00

标签: ruby-on-rails forms

我有两段代码只会在我进行更改时运行一次并将代码保存在表单中,然后重新加载表单。下次打开并运行表单时,它无法运行。我的应用程序的每个其他部分都运行得很好。

第一个是日期选择器:

日期选择器仅在第一次显示。

以下是咖啡脚本:

$.fn.extend {
  integrateDatepicker: (selector)->
    selector = selector || '.datepicker'
    $(@).find(selector).datepicker({"format": "dd/mm/yyyy"}) 
}
$(document).ready () ->
  $('body').integrateDatepicker()

以下是表单摘要:

<div class="row">
  <div class="span6 offset3">
    <%= simple_form_for([@council_report]) do |f| %>
      <p>
        <%= f.input :report_title %>
      </p>
      <p>
        <%= f.input :report_desc %>
      </p>
      <p>
        <%= f.input :report_date, as: :string, input_html: {class: 'datepicker'} %>
      </p>       
      <p>
        <%= f.submit  class: "btn btn-large btn-primary" %>
      </p>
    <% end %>
  </div>
</div>

第二个是表单帖子:

“create”操作仅在第一次加载表单时成功运行。

以下是表单摘要:

<%= form_for(:select_asset, url: {action: "create"}) do |form| %>
  <% @assets_not_in.each_with_index do |asset_not_in, index|
       asset = Asset.find(asset_not_in.id) %>
       <%= fields_for "assets_to_check[#{index}]", asset_not_in do |f| %>
         <%= f.hidden_field :id, :value => asset.id %>
         <tr>
           <td><%= asset.asset_name %></td>
           <td><%= asset_type_desc(asset.asset_type_code) %></td>
           <td><%= asset.address.address_long %></td>
           <td><%= asset.address.postcode %></td>
           <td><%= asset.address.state_code %></td>
           <td><%= f.check_box :add_asset %></td>
         </tr>
       <% end %>
  <% end %>
</table>

  <%= link_to 'Back', council_report_report_assets_path(@council_report) %>
  <%= form.submit "Add Assets", class: "btn btn-large btn-primary" %>
<% end %>

问题:

  1. 有没有人经历过这种行为?
  2. 我的申请导致这种商业行为有什么问题?
  3. 当然,我该如何解决?

1 个答案:

答案 0 :(得分:0)

在rails 4中默认启用Turbolinks,这将导致jQuery $(document).ready出现问题。

要验证您是否运行了turbolink,请检查app/views/layouts/application.html.erb。寻找行

<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
head中的

。如果它们设置为true,请尝试将jquery-turbolinks gem添加到Gemfile中。

Turbolinks通过ajax呈现页面的某些部分,因此除非您通过该页面进入网站或进行硬刷新,否则$(document).ready将不会触发。宝石通过自动更改$(document).ready听众来解决此问题:http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks