2016-06-13 10 views
0

私は基本的なアプリケーションをlistsのそれぞれでhas_manyitemsのように作成しています。私はAJAXをリストの作成に実装しようとしていて、lists#indexページに表示しようとしています。新しいリストは大丈夫ですが、手動でページを更新するまで表示されません。サーバログで説明したようにここでエラーが、次のとおりです。ここでAJAXオブジェクトは手動で更新されるまで作成されません

List Exists (0.1ms) SELECT 1 AS one FROM "lists" WHERE ("lists"."id" IS NOT NULL) AND "lists"."slug" = ? LIMIT 1 [["slug", "new-list-again"]] 
    SQL (0.3ms) INSERT INTO "lists" ("name", "shared_with", "user_id", "slug") VALUES (?, ?, ?, ?) [["name", "New List Again"], ["shared_with", ""], ["user_id", 2], ["slug", "new-list-again-dc08b63c-1d57-42ea-a725-a2c5c185e529"]] 
    (0.7ms) commit transaction 
    Rendered lists/create.js.erb (7.9ms) 
Completed 500 Internal Server Error in 22ms (ActiveRecord: 1.4ms) 

NoMethodError - undefined method `valid?' for nil:NilClass: 
    app/views/lists/create.js.erb:1:in `_app_views_lists_create_js_erb___822718317456566494_70187652289300' 

は私のlists#indexページ上の関連するコードは次のとおりです。ここで

<h1>My Lists (<%= @lists.count %>)</h1> 
<% if @lists.count == 0 %> 
    <p>You don't have any lists yet! Why don't we remedy that?<p> 
<% end %> 

<div class='list-form'> 
    <%= render partial: 'lists/form', locals: { list: @list } %> 
</div> 

<div class="js-lists"> 
    <%= render @lists %> 
</div> 

は、部分的に私lists/_form次のとおりです。

ここ
<div class="row"> 
    <div class="col-xs-12"> 
    <%= form_for @list, format: :js, remote: true do |f| %> 
     <div class="form-group col-sm-6"> 
     <%= f.label :name %> 
     <%= f.text_field :name, class: 'form-control', placeholder: "Enter List Name" %> 
     </div> 

     <div class="form-group col-sm-6"> 
     <%= f.label 'Share My List (Not Required)' %> 
     <%= f.text_field :shared_with, class: 'form-control', placeholder: "Enter Emails Separated by Commas" %> 
     </div> 

     <div class="text-center"><%= f.submit "Let's Go!", class: 'btn btn-primary' %></div> 
    <% end %> 
    </div> 
</div> 

lists/_list部分である:

<%= link_to list_path(list) do %> 
    <h4><%= list.name %> 
    <% if list.shared_with != "" %> 
    (Shared) 
    <% end %> 
    <% end %> 
<small>(<%= list.items.count %> Items, <%= link_to "Edit", edit_list_path(list) %> | <%= link_to "Delete", list_path(list), method: :delete %>)</small></h4> 
ここ

create.js.erbファイルです:

<% if @item.valid? %> 
    $('.js-lists').prepend("<%= escape_javascript(render partial: 'lists/list', locals: { list: @list }) %>"); 
    $('.list-form').html("<%= escape_javascript(render partial: 'lists/form', locals: { list: @new_list }) %>"); 
<% else %> 
    $('.flash').prepend("<div class='alert alert-danger'><button type='button' class='close' data-dismiss='alert'>&times;</button><%= flash.now[:alert] %></div>"); 
    $('.new-list').html("<%= escape_javascript(render partial: 'lists/form', locals: { list: @list }) %>"); 
<% end %> 

そして、ここでは私のlists_controllercreate方法です:

​​

私はルビーに比較的新しいですが、JavaScriptに非常に新しいので、私は希望誰かが私がここで間違っているところを指摘するのを助けることができれば感謝します。新しいlistが確実に作成されていますが、手動でページを更新するまで表示されません。あなたはcreate.js.erbに間違った変数名を持っているよう

答えて

0

が見えます。あなたは、私はそれが愚かな何かを知っていた@listの妥当性、ない@item

+0

聖藩主をチェックする必要があります。ありがとうございました。 – Liz

関連する問題