簡體   English   中英

保存並重新加載后,Rails Server僅成功運行一次表單

[英]Rails Server runs form successfully only one after save and reload

我有2條代碼,當我進行更改並將代碼保存在表單中然后重新加載表單時,它們只會運行一次。 下次我打開並運行該窗體時,它將無法運行。 我的應用程序的其他所有部分都運行良好。

第一個是日期選擇器:

日期選擇器僅在第一次出現。

這是咖啡腳本:

$.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>

第二個是表單發布:

僅在第一次加載表單時,“創建”操作才能成功運行。

這是表單片段:

<%= 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. 我的應用導致這種bizaire行為出了什么問題?
  3. 當然,我該如何解決?

Turbolink默認在rails 4中啟用,並且會導致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不會觸發,除非您通過該頁面進入該網站或進行強制刷新。 gem通過自動更改$(document).ready偵聽器來解決此問題: http : //edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM