Template :: Error(未定义的方法`specification_items_path'

时间:2012-12-24 07:14:56

标签: ruby-on-rails routes naming-conventions

我在routes.db中有一行:

resources :specificationItems 

我的specification_item.rb模型

class SpecificationItem < ActiveRecord::Base
    attr_accessible :amount, :item_id, :price, :specification_id, :total
    belongs_to :specification
    belongs_to :item
end

specification_items.rb控制器:

class SpecificationItemsController < ApplicationController
    def new

        @specificationItem = SpecificationItem.new(:specification_id => params[:specification_id])
    end

  def create

    @specificationItem = SpecificationItem.new(params[:specificationitem])

    if @specificationItem.save
        respond_to do |format|
        format.html {
            flash[:success] = "Запись добавлена успешно"
            redirect_to @specificationItem      
        }         
        format.js
        end
    else
      render 'new'
    end
  end

    def show
        @specificationitems = SpecificationItem.where("specification_id = ?", @specification.id.to_s)
    end

    def index
        @specificationitems = SpecificationItem.all
    end

end

在规范/ show中使用此行调用specification_item的新操作:

  <%= link_to "Add item to spec", new_specificationItem_path(:specification_id =>@specification.id), id: "new_item", remote: true %>

这是new.js.erb

中的js动作
  $('#new_item').hide().after('<%= j render("form") %>')

partial _form.html.erb:

  <%= form_for @specificationItem, remote: true do |f| %>
    <div class="row">
    <div class="span6 offset3">
        <%= f.label :item_id, "Товар" %>
        <%= f.text_field :item_id %>
        <%= f.hidden_field :specification_id %>

   </div>
   </div>

<%= f.submit "Сохранить", class: "btn btn-large btn-primary" %>
<% end %>

它引发错误:

ActionView::Template::Error (undefined method `specification_items_path' for #<#<Class:0xb5b708e4>:0xb5b6e5e4>):
    1: <%= form_for @specificationItem, remote: true do |f| %>
    2:     <div class="row">
    3:      <div class="span6 offset3">
    4:              <%= f.label :item_id, "Товар" %>
  app/views/specification_items/_form.html.erb:1:in `_app_views_specification_items__form_html_erb___537109236__624411928'
  app/views/specification_items/new.js.erb:1:in `_app_views_specification_items_new_js_erb___211974400__624460778'

我怀疑错误属于命名约定,但可以识别它。 对不起我的新手问题和错误的英文

谢谢!

1 个答案:

答案 0 :(得分:3)

尝试rake routes它会显示所有可用路径。 另外我注意到你写了resources :specificationItems,由于方便,它应该是resources :specification_items