0

配置と連絡先の 2 つのモデルがあります。

/views/arrangements/index.html.erbページで、連絡先の表を表示しようとしています

私はまた、このフォームを含むモデルウィンドウを自分のArrangement/index.html.erbに持っています:

<%= form_for @new_to_contact, :remote => true, :id => 'new_item' do |f| %>
    <%= f.label :family_name %>
    <%= f.text_field :family_name %>
    <%= f.label :action %>
    <%= f.text_area :action, :rows => 3 %>
    <%= button_tag "Save", :type => 'submit' %>
    <%= button_tag "Cancel", :type => 'button', :data => {:dismiss => 'modal' } %>
  <% end %>

これが私のarrangements_controller#index方法です

def index
    @arrangements = Arrangement.find(:all, :order => 'location_id')
    @new_to_contact = Contact.new

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @arrangements }
    end
  end

これが私のcontacts_controller#create方法です

def create
    @to_contact = Contact.new(params[:to_contact])

    respond_to do |format|
      if @to_contact.save
        format.js
        format.html { redirect_to @to_contact, notice: 'To contact was successfully created.' }
        format.json { render json: @to_contact, status: :created, location: @to_contact }
      else
        format.html { render action: "new" }
        format.json { render json: @to_contact.errors, status: :unprocessable_entity }
      end
    end
  end

これが私の/views/contacts/create.js.erb です

console.log('TEST');
$('#myModal').modal('hide');

私の質問は、create.js.erbファイルからアレンジメント インデックス ファイルに連絡先リストをリロードするにはどうすればよいですか?

この行をcreate.js.erbファイルに追加しようとしましたが、テンプレート エラーがスローされました。

$(".table").html("<%= escape_javascript(render(Contact.all)) %>");
4

1 に答える 1

1

Rails の方法によると、new_contact フォームを Arrangements/index.html.erb からcontacts/_form.html.erb に抽出し、この部分を Arrangements/index.html.erb 内でレンダリングする必要があります。

次に、次のようなものを使用して、js.erb ファイルからこのテンプレートを簡単にレンダリングできます。

$('.table tr:last').after("<%= escape_javascript(render :partial => 'form', :locals => {:contact => @to_contact}) %>")
于 2013-03-10T07:54:22.510 に答える