簡體   English   中英

Ruby on Rails上無效參數的Ajax錯誤

[英]Ajax error for invalid arrguments on Ruby on Rails

我收到這個錯誤

List#create中的ArgumentError

“ nil”不是與ActiveModel兼容的對象。 它必須實現:to_partial_path。

這是我的index.html.erb文件

<div class="container">

    <div class="row">
        <div class="col-md-5"></div>
        <div class="col-md-4">
            <h4>Lists Homepage</h4>
        </div>
    </div>

    <div class="row">
    <div><%= link_to "New List", controller: "list", action: "new" , remote: true %>&nbsp;<%= image_tag("greenPlus.png", :alt => "add list", :height=>"15px", :width=>"15px") %></div>
    </div>

    <div class="row">&nbsp;</div>

    <div class="row">
        <div class="col-md-4">
            <div id="lists">
                <% @lists.each do |piece_list| %>
                    <%= render :partial=>"list/piece_list", :object=>piece_list %>
                <% end %>
            </div>
            <%= render "new" %>
        </div>
    </div>
</div>

這是create.js.erb

    $("#new_list").before("<div id='flash-notice'><%= escape_javascript(flash[:notice]) %></div>");
$("<%= escape_javascript(render @piece_list) %>").appendTo("#lists");
$("#new_list")[0].reset();

這是piece_list.html.erb

<table class="table table-bordered"> 
    <thead> 
        <tr> 
            <th><%= piece_list.name %></th>
            <th><%= image_tag("redCross1.png", :alt => "delete list", :class => "deleteList", :height=>"15px", :width=>"15px") %></th>
        </tr> 
    </thead> 
    <tbody class="list-index">
        <% if piece_list.items.any? %>
            <% piece_list.items.each do |item| %>
                <%= render :partial=>"list/item", :object=>item %>
            <% end %>
        <% end %>
    </tbody> 
</table>

這是控制器

    class ListController < ApplicationController

    def index
        @list = List.new    
        @lists = List.joins("LEFT JOIN  `items` ON `items`.`list_id` = `lists`.`id`")
    end

    def create

        @piece_list = List.create(list_params)

        if @piece_list.save
            flash[:notice] = "Thank you for submitting"
            respond_to do |format|
                format.html { redirect_to @lists }
                format.js {}
            end
        else
            format.html { render action: "new" }
            format.js {}
        end
    end

    private
    def list_params
        params.require(:list).permit(:name)
    end

end

看起來@piece_list沒有在create.js.erb定義-您可能應該使用@list來代替。 請嘗試更換並查看是否有效

暫無
暫無

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

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