0

私は解決策を探していましたが、それは不可能でした。よく説明されていることを願っています。

DBの属性の1つを変更するための小さなフォームを持つユーザーのリストがあります(その属性は、ユーザーがチェックインを行ったことを知ることです)。

ここに画像の説明を入力

すべてのページがリロードされないように、AJAX で結果を表示するサーチャーもあります。初めてページをロードすると、ブラウザは HTML をレンダリングし、Saveボタンは期待どおりに機能します。しかし、サーチャーを使用して(JSを使用して)リストが表示されると、送信ボタンが機能しません。Mozilla Firefox では何もしません。Google Chrome では次のエラーが表示されますNo route matches "user's profile route"。サーチャーは正常に動作します (正しいユーザーを表示します)。Rails 3.0.1 と Ruby 1.8.7 を使用しています

check_in.html.erb

これがサーチャーとレンダリング呼び出しです

<%= form_tag({:controller => "admins", :action => "check_in"}, :id => "users_search", :method => "get", :html => {:autocomplete => "off"}) do %>
  <%= hidden_field_tag :selected_event_id, params[:selected_event_id] %>
  <p>
     <%= text_field_tag :search, params[:search] %>
     <%= submit_tag "Search", :name => nil %>
  </p>
<% end %>    
<div id="check_in"><%= render :partial => 'check_in' %></div>

_check_in.html.erb

これは上でレンダリングするパーシャルです

  <%@event_user_infos.each do |user_info|subscription = Subscription.find(:first, :conditions => ["user_id = ? and event_id = ?", user_info.user_id, params[:selected_event_id]])%>
       <%= simple_form_for(subscription) do |f| %>
          <%= f.hidden_field :user_id %>  
          <%= f.hidden_field :event_id %>
          <tr>
          <td><%= link_to user_info.name, subscription %></td>
          <td><%= user_info.company %></td>
          <td><%= user_info.user.email %></td>
          <td><%= subscription.networkId %></td>
              <td><%= f.input :token, :input_html => { :size => 15, :maxlength => 15 }, :as => :integer, :label => false %></td>
              <td width='5px'>
                 <%= f.submit 'save' %>
              </td>
         </tr>
      <% end %>
 <% end %>

admins_controller.rb

コードの関連部分のみを配置します

def check_in
    event_id = params[:selected_event_id]
    if !event_id.nil?
      session[:event_id] = event_id      
      @event_user_infos = UserInfo.search(params[:search],event_id).order(sort_column + ' ' + sort_direction)
   end
end

check_in.js.erb

$('#check_in').html('<%= escape_javascript(render :partial => 'check_in') %>');

編集

パーシャルのフォームに条件:remote => remote付きオプション (検索があるremote == true場合とそうでない場合remote == false) を追加すると、Google Chrome のエラーは消えましたが、まだ何もしません (両方のブラウザーで)。HTMLソースも確認したところ問題ないようです。

4

1 に答える 1

0

私はついに問題を解決することができました。ファイル内のコード行を変更したところ、両方のブラウザーで動作するようになりまし<%= javascript_include_tag :defaults%>た。<%= javascript_include_tag 'prototype'%>application.html.erb

于 2013-01-24T09:04:33.193 に答える