【问题标题】:undefined method `item_path' while working with ajax使用ajax时未定义的方法`item_path'
【发布时间】:2016-03-13 07:10:49
【问题描述】:

我正在尝试更新我的 create item 操作以与 Ajax 一起使用,但我收到了 undefined methoditem_path` 的错误,当它以常规 html 格式响应时,我之前没有遇到此错误。该项目已创建并保存,但 ajax 似乎无法正常工作。

这是我的 _from 部分:

   <%= form_for [@user, item], remote: true do |f|%>
      <div class="form-group">
        <%= f.label :name, class: 'sr-only' %>
        <%= f.text_field :name , class: 'form-control', placeholder: "Enter a new item " %>
      </div>
      <%= f.submit "Submit Item", class: 'btn btn-primary pull-right' %>
    <% end %>

项目#创建:

  def create
    @item = Item.new(item_params)
    @item.user = current_user

    if @item.save
      flash[:notice] = 'Item saved successfully.'
    else
      flash[:alert] = 'Item not saved. Title is too short or missing. Please try again.'
    end
    respond_to do |format|
      format.html
      format.js
    end
  end

创建.js.erb:

$('.js-items').prepend("<%= escape_javascript(render(@item)) %>");
   $('.new-item').html("<%= escape_javascript(render partial: 'items/form', locals: {user: @user , item: @item }) %>");

用户#显示视图

<div class='new_item'>
<%= render :partial => 'items/form', :locals =>{:item => Item.new , :user => @user} %>
</div>
<div class='js-items'>
  <%= render @user.items %>
</div>

路线:

user_items GET    /users/:user_id/items(.:format)          items#index
                     POST   /users/:user_id/items(.:format)          items#create
       new_user_item GET    /users/:user_id/items/new(.:format)      items#new
      edit_user_item GET    /users/:user_id/items/:id/edit(.:format) items#edit
           user_item GET    /users/:user_id/items/:id(.:format)      items#show
                     PATCH  /users/:user_id/items/:id(.:format)      items#update
                     PUT    /users/:user_id/items/:id(.:format)      items#update
                     DELETE /users/:user_id/items/:id(.:format)      items#destroy

我在 rails s 中遇到的错误:

ActionView::Template::Error (undefined method `item_path' for #<#<Class:0x007fa4f0d30cd8>:0x007fa4f31b26b0>):
    1: <%= form_for [@user, item], remote: true do |f|%>
    2:   <div class="form-group">
    3:     <%= f.label :name, class: 'sr-only' %>
    4:     <%= f.text_field :name , class: 'form-control', placeholder: "Enter a new item " %>
  app/views/items/_form.html.erb:1:in `_app_views_items__form_html_erb__331698480542899910_70173200751480'
  app/views/items/create.js.erb:2:in `_app_views_items_create_js_erb___3618987352886002527_70173200313760'
  app/controllers/items_controller.rb:17:in `create'

【问题讨论】:

  • 您的局部路径设置有问题。
  • @MohammadShahadatHossain 我认为这是因为 rails 的错误清楚地说明了这一点,但我知道我怎么无法修复它

标签: javascript jquery ruby-on-rails ajax


【解决方案1】:

做这样的事情。

<%= form_for [@user, item], user_items, remote: true do |f|%>

如果不行就运行

rake routes

在终端中查看您的路径。

【讨论】:

  • 我试过了,但没用这里是我的项目POST /users/:user_id/items(.:format) items#create new_user_item GET /users/:user_id/items/new(.:format) items#new
  • 我得到一个完全不同的错误undefined method name' #<0x007fa4f14fb990>
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2017-03-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多