Ruby on rails 4 未定义的方法“[]';对于nil:NilClass用于活动模型和活动记录

Ruby on rails 4 未定义的方法“[]';对于nil:NilClass用于活动模型和活动记录,ruby-on-rails-4,Ruby On Rails 4,控制器 型号 查看 我刚刚显示了代码的Abstract。它为nil:NilClass返回未定义的方法“[]” 有人能告诉你这个问题的解决方法吗?对你最初的问题的回答:从错误中看,它看起来像params[:query]返回Nil,因为你正在寻找一个嵌套的参数,而Nil不存在。要解决此问题,请尝试将for方法更改为方法:“post”并创建create操作 AJAX实现: 将remote:true添加到表单中,因此它应该类似于: <%= form_for @query, url: queri

控制器

型号

查看


我刚刚显示了代码的Abstract。它为nil:NilClass返回
未定义的方法“[]”


有人能告诉你这个问题的解决方法吗?

对你最初的问题的回答:从错误中看,它看起来像
params[:query]
返回
Nil
,因为你正在寻找一个嵌套的参数,而
Nil
不存在。要解决此问题,请尝试将for方法更改为
方法:“post”
并创建
create
操作

AJAX实现:

  • remote:true
    添加到表单中,因此它应该类似于:

    <%= form_for @query, url: queries_new_path, method: "post", remote: true do |f| %>
    
  • 创建一个
    create.js.erb
    文件,您可以在其中定义ajax回调(渲染、隐藏等内容)。如果在创建操作中执行
    @query.save
    或类似操作,则可以在视图中执行,如下所示:

    <% if @query.save %>
      $(".some_success_block").html("some success message")
    <% else %>
      $(".some_outter_div_around_form").html("<%= j render 'form' %>")
    <% end %>
    
    
    $(“.some_success_block”).html(“some success message”)
    $(“.some\u outter\u div\u around\u form”).html(“”)
    
  • 这要求您有一个名为
    \u form.html.erb
    的局部视图,其中包含您的表单

    然后您可以将
    new.html.erb
    中的表单替换为

    这应该可以做到


    关于Rails中AJAX的更多信息:

    从错误中,它看起来像是
    params[:query]
    返回
    Nil
    ,因为您正在寻找一个嵌套的参数,该参数对于Nil不存在。要解决此问题,请尝试将for方法更改为
    方法:“post”
    并创建
    create
    action。任何人都可以告诉ajax实现显示输出。
    <%= form_for @query, url: queries_new_path, method: "get" do |f| %>
    <td><%= f.text_field :query_string %></td>
    
    <%= form_for @query, url: queries_new_path, method: "post", remote: true do |f| %>
    
    respond_to do |format|
      format.js {}
    end
    
    <% if @query.save %>
      $(".some_success_block").html("some success message")
    <% else %>
      $(".some_outter_div_around_form").html("<%= j render 'form' %>")
    <% end %>