0
.

Это простой список продуктов. Левый столбец div - это список списков. Элементы для определенного списка отображаются в правом столбце div.Rails: AJAX не работает с формой. Создать действие.

Вот процесс:

пользователь нажимает на одном из списков, которые затем загружает (AJAX), это связаны элементы в правых делах. Это работает нормально.

Вот где я застрял:

Над элементов является поле ввода, чтобы представить новый элемент в список пунктов ниже. Я хочу, чтобы AJAX добавлял новый элемент к элементам ниже, но когда я нажимаю кнопку ввода в поле формы, ничего не происходит. Когда я обновляюсь, добавляется новый элемент.

Вот что говорит сервер:

Processing by ItemsController#create as JS 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"YWIlMPXqoTvhqzGGPqm6Rn/E7jPRt8do/2tkjd0H1Qk=", "item"=>{"name"=>"Mayo"}, "list_id"=>"4"} 
    List Load (0.1ms) SELECT "lists".* FROM "lists" WHERE "lists"."id" = ? LIMIT 1 [["id", "4"]] 
    (0.0ms) begin transaction 
    SQL (20.9ms) INSERT INTO "items" ("completed", "created_at", "description", "list_id", "name", "position", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?) [["completed", false], ["created_at", Mon, 29 Apr 2013 21:59:06 UTC +00:00], ["description", nil], ["list_id", 4], ["name", "Mayo"], ["position", nil], ["updated_at", Mon, 29 Apr 2013 21:59:06 UTC +00:00]] 
    (1.6ms) commit transaction 
    Rendered items/_piece.html.erb (0.0ms) 
    Rendered items/create.js.erb (0.7ms) 

Вот процесс загрузки страницы:

home.html.erb>_single.html.erb>create.js.erb> добавляет _piece.html.erb к home.html.erb

Это Создать действие из моего items_controller.rb файл:

def create 
     @list = List.find(params[:list_id]) 
     @item = @list.items.create!(params[:item]) 
     respond_to do |format| 
      format.html 
      format.js 
     end 
    end 

Это мой create.js файл:

$('#item-container').prepend('<%= j render(partial: 'piece', locals: {item: @item}) %>'); 

Это мой _piece.html.erb файл:

<li><%= item.name %></l1> 

Это мой _single.html.erb файл:

<div id="filter"> 
    <div id="filter-left"> 

    </div> 
    <div id="filter-right"> 
    <%= link_to 'Delete', @list, :method => :delete %> 
    </div> 
</div> 

<div id="quick-add"> 
    <%= form_for [@list, @item], :id => "form-quick", remote: true do |form| %> 
     <%= form.text_field :name, :id => "input-quick", :autocomplete => "off" %> 
    <% end %> 
</div> 

<ul class="item-container"> 
    <% @list.items.incomplete.each do |item| %> 
    <% if item.id %> 
     <li><%= link_to "", complete_item_path(@list.id,item.id), :class => "button-item button-item-incomplete" %> <%= item.name %></li> 
    <% end %> 
    <% end %> 
</ul> 

<div class="title">Completed items</div> 

<ul class="item-container"> 
    <% @list.items.completed.each do |item| %> 
    <% if item.id %> 
     <li><div class="button-item button-item-completed"></div><%= item.name %></li> 
    <% end %> 
    <% end %> 
</ul> 

Это мой home.html.erb fil e:

<div id="main-left"> 
    <div id="main-left-1"> 
     <%= link_to 'Add List', new_list_path, class: "button", id: "new_link", remote: true %> 
    </div> 
    <ul id="lists" data-update-url="<%= sort_lists_url %>"> 
     <% @lists.each do |list| %> 
     <%= content_tag_for :li, list do %> 
      <%= link_to list.name, list, :remote => true, :class => "link" %> 
     <% end %> 
     <% end %> 
    </ul> 
</div> 
<div id="main-right"> 

</div> 

ответ

1

Ну, у меня был «item-container» как идентификатор вместо класса в файле JS.ERB. СИЛЬНЫЕ ОШИБКИ!