联系人中的NoMethodError #index - Contacts#index中的NoMethodError

时间:2013-07-22 20:30:11

标签: ruby-on-rails ruby

尝试从我的联系人模型的索引向我的代表模型添加编辑链接时出错。我上周工作了,但我现在已经对我的数据库进行了更改,并且我有一个可用的联系人的编辑链接,但是当我添加路径edit_rep_path(rep)时,我收到错误。我的所有代码都遵循完整的跟踪:

完整追踪:

activemodel (3.2.1) lib/active_model/conversion.rb:52:in `to_param'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:417:in `block in <class:Generator>'
journey (1.0.4) lib/journey/formatter.rb:31:in `call'
journey (1.0.4) lib/journey/formatter.rb:31:in `block (2 levels) in generate'
journey (1.0.4) lib/journey/formatter.rb:30:in `each'
journey (1.0.4) lib/journey/formatter.rb:30:in `block in generate'
journey (1.0.4) lib/journey/formatter.rb:60:in `match_route'
journey (1.0.4) lib/journey/formatter.rb:16:in `generate'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:510:in `generate'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:551:in `generate'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:576:in `url_for'
actionpack (3.2.1) lib/action_dispatch/routing/url_for.rb:148:in `url_for'
actionpack (3.2.1) lib/action_view/helpers/url_helper.rb:107:in `url_for'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:202:in `edit_rep_path'
app/views/contacts/index.html.erb:88:in `block in _app_views_contacts_index_html_erb___595989602_34757832'
app/views/contacts/index.html.erb:79:in `each'
app/views/contacts/index.html.erb:79:in `_app_views_contacts_index_html_erb___595989602_34757832'
actionpack (3.2.1) lib/action_view/template.rb:143:in `block in render'
activesupport (3.2.1) lib/active_support/notifications.rb:125:in `instrument'
actionpack (3.2.1) lib/action_view/template.rb:141:in `render'
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:41:in `block (2 levels) in render_template'
actionpack (3.2.1) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.1) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:40:in `block in render_template'
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:48:in `render_with_layout'
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:39:in `render_template'
actionpack (3.2.1) lib/action_view/renderer/template_renderer.rb:12:in `render'
actionpack (3.2.1) lib/action_view/renderer/renderer.rb:36:in `render_template'
actionpack (3.2.1) lib/action_view/renderer/renderer.rb:17:in `render'
actionpack (3.2.1) lib/abstract_controller/rendering.rb:109:in `_render_template'
actionpack (3.2.1) lib/action_controller/metal/streaming.rb:225:in `_render_template'
actionpack (3.2.1) lib/abstract_controller/rendering.rb:103:in `render_to_body'
actionpack (3.2.1) lib/action_controller/metal/renderers.rb:28:in `render_to_body'
actionpack (3.2.1) lib/action_controller/metal/compatibility.rb:50:in `render_to_body'
actionpack (3.2.1) lib/abstract_controller/rendering.rb:88:in `render'
actionpack (3.2.1) lib/action_controller/metal/rendering.rb:16:in `render'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render'
activesupport (3.2.1) lib/active_support/core_ext/benchmark.rb:5:in `block in ms'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
activesupport (3.2.1) lib/active_support/core_ext/benchmark.rb:5:in `ms'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:40:in `block in render'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:83:in `cleanup_view_runtime'
activerecord (3.2.1) lib/active_record/railties/controller_runtime.rb:24:in `cleanup_view_runtime'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:39:in `render'
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
actionpack (3.2.1) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.1) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.1) lib/active_support/callbacks.rb:414:in `_run__206336291__process_action__115771758__callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.1) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.1) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.1) lib/action_controller/metal/params_wrapper.rb:205:in `process_action'
activerecord (3.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.1) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.1) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.1) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.1) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `call'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `dispatch'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:30:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:589:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call'
activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__120318686__call__42201320__callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
railties (3.2.1) lib/rails/engine.rb:479:in `call'
railties (3.2.1) lib/rails/application.rb:220:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

Db迁移文件: create_contacts.rb

    class CreateContacts < ActiveRecord::Migration
  def change
    create_table :contacts do |t|
      t.integer :Ref
      t.integer :Company_Id
      t.string :Name
      t.string :Mail_Address
      t.string :Physical_Address
      t.string :Phone
      t.string :Fax
      t.string :Email
      t.string :Delete_Flag

      t.timestamps
    end
  end
end

create_reps.rb

    class CreateReps < ActiveRecord::Migration
  def change
    create_table :reps do |t|
      t.integer :Ref
      t.integer :Company_Id
      t.string :Company
      t.string :First
      t.string :Last
      t.string :Phone
      t.string :P_ext
      t.string :Fax
      t.string :F_ext
      t.string :Email
      t.string :Delete_Flag

      t.timestamps
    end
  end
end

控制器: contacts_controller.rb

class ContactsController < ApplicationController
  # GET /contacts
  # GET /contacts.json
  def index
    @contacts = Contact.search(params[:search])
    @reps = Rep.search(params[:search])
  end

  # GET /contacts/1
  # GET /contacts/1.json
  def show
    @contact = Contact.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @contact }
    end
  end

  # GET /contacts/new
  # GET /contacts/new.json
  def new
    @contact = Contact.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @contact }
    end
  end

  # GET /contacts/1/edit
  def edit
    @contact = Contact.find(params[:id])
  end

  # POST /contacts
  # POST /contacts.json
  def create
    @contact = Contact.new(params[:contact])

    respond_to do |format|
      if @contact.save
        format.html { redirect_to @contact, notice: 'Contact was successfully created.' }
        format.json { render json: @contact, status: :created, location: @contact }
      else
        format.html { render action: "new" }
        format.json { render json: @contact.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /contacts/1
  # PUT /contacts/1.json
  def update
    @contact = Contact.find(params[:id])

    respond_to do |format|
      if @contact.update_attributes(params[:contact])
        format.html { redirect_to @contact, notice: 'Contact was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @contact.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /contacts/1
  # DELETE /contacts/1.json
  def destroy
    @contact = Contact.find(params[:id])
    @contact.destroy

    respond_to do |format|
      format.html { redirect_to contacts_url }
      format.json { head :no_content }
    end
  end

end

reps_controller.rb

class RepsController < ApplicationController
  # GET /reps
  # GET /reps.json
  def index
    @rep = Rep.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @reps }
    end
  end

  # GET /reps/1
  # GET /reps/1.json
  def show
    @rep = Rep.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @rep }
    end
  end

  # GET /reps/new
  # GET /reps/new.json
  def new
    @rep = Rep.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @rep }
    end
  end

  # GET /reps/1/edit
  def edit
    @rep = Rep.find(:all, params[:id])

  end

  # POST /reps
  # POST /reps.json
  def create
    @rep = Rep.new(params[:rep])

    respond_to do |format|
      if @rep.save
        format.html { redirect_to @rep, notice: 'Rep was successfully created.' }
        format.json { render json: @rep, status: :created, location: @rep }
      else
        format.html { render action: "new" }
        format.json { render json: @rep.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /reps/1
  # PUT /reps/1.json
  def update
    @rep = Rep.find(params[:id])

    respond_to do |format|
      if @rep.update_attributes(params[:rep])
        format.html { redirect_to @rep, notice: 'Rep was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @rep.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /reps/1
  # DELETE /reps/1.json
  def destroy
    @rep = Rep.find(params[:id])
    @rep.destroy

    respond_to do |format|
      format.html { redirect_to contacts_url }
      format.json { head :no_content }
    end
  end
end

型号: contact.rb

class Contact < ActiveRecord::Base
    attr_accessible :Name, :Mail_Address, :Physical_Address, :Phone, :Fax, :Email

    validates :Name, :presence => true
    validates :Mail_Address, :presence => true
    validates :Physical_Address, :presence => true
    validates :Phone, :presence => true,
                        :length => { :minimum => 10}
    validates :Fax, :presence => true,
                        :length => { :minimum => 10}
    validates :Email, :presence => true

    has_many :reps
    def self.search(search)
        if search
            find(:all, :conditions => ['Ref LIKE ?', "#{search}"])
        else
            find(:all, :conditions => ['Ref LIKE ?', nil])
        end
    end
end

rep.rb

class Rep < ActiveRecord::Base
    attr_accessible :Ref, :Company_Id, :Company, :First, :Last, :Phone, :P_ext, :Fax, :F_ext, :Email, :Delete_Flag
    belongs_to :contacts
    def self.search(search)
        if search
            find(:all, :conditions => ['Ref LIKE ?', "#{search}"])
        else
            find(:all, :conditions => ['Ref LIKE ?', nil])
        end
    end
end

的routes.rb

ContactsInfo::Application.routes.draw do
  #get "search/create"

  resources :contacts

  resources :reps

  get "home/index"

   root :to => 'home#index'

end

的观点: 往来 indes.html.erb

<a href="http://www.newsouthsupply.com/index.htm">
<img src="http://www.newsouthcatalog.com/uploads/57/Logo/New-South-Construction-Supply-Logo.png" alt="Home Page" align="left" title="New South Supply Home" width="150" height="150"/>
</a>
<a href="http://www.newsouthcatalog.com/">
<img src="http://www.newsouthcatalog.com/uploads/57/Logo/New-South-Construction-Supply-Logo.png" alt="Online Catalog" title="New South Supply Online Catalog" align="right" width="130" height="150"/>
</a>
<center>
<h1>New South Construction Supply's Contact Information</h1>
<h2>Please take a few minutes out of your busy day to help us keep our records up to date.</h2>
<h2>Enter company id</h2>

<!-- Text Box and Search Button -->
<%= form_tag contacts_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>

  </p>
<% end %>
<font color="000000">

<!-- Table of Company Information -->    
<h2>Company Information</h2>
<font color = "BDBEBF">
<div style="margin:0 auto;background-color:#000000;width:100%;">
<table width="100%" border ="1">
  <tr>
    <th><font color="5780AE">Reference</th>
    <th><font color="5780AE">Company Id</th>
    <th><font color="5780AE">Name</th>
    <th><font color="5780AE">Mail address</th>
    <th><font color="5780AE">Physical address</th>
    <th><font color="5780AE">Phone</th>
    <th><font color="5780AE">Fax</th>
    <th><font color="5780AE">Email</th>
    <th><font color="5780AE">Delete Flag</th>
    <th></th>
    <!--<th></th>-->
  </tr>
<!-- Populate Table -->


<% @contacts.each do |contact| %>
  <tr>
    <td><center><%= contact.Ref %></td>
    <td><center><%= contact.Company_Id %></td>
    <td><center><%= contact.Name %></td>
    <td><center><%= contact.Mail_Address %></td>
    <td><center><%= contact.Physical_Address %></td>
    <td><center><%= contact.Phone %></td>
    <td><center><%= contact.Fax %></td>
    <td><center><%= contact.Email %></td>
    <td><center><%= contact.Delete_Flag %></td>
    <td><center><%= link_to 'Edit', edit_contact_path(contact), {:style => 'color:#E86A10', :class => "css_class"} %></td>
    <!--<td><%= link_to 'Delete', contact, confirm: 'Are you sure?', method: :delete, :style => 'color:#E86A10', :class => "css_class" %></td> -->
  </tr>
<%end%>
</table>
</div>
<font color="000000">
<h1>  </h1>

<!-- Table of Company's Contact Information -->
<h2> Contact Information </h2>
<font color="BDBEBF">
<div style="margin:0 auto;background-color:#000000;width:100%;">
<table border="1" width = "100%">
  <tr>
    <th><font color="5780AE">First</th>
    <th><font color="5780AE">Last</th>
    <th><font color="5780AE">Phone</th>
    <th><font color="5780AE">P ext</th>
    <th><font color="5780AE">Fax</th>
    <th><font color="5780AE">Email</th>
    <th><font color="5780AE">Delete Flag</th>
    <th></th>
  </tr>
<!-- Populate Table -->
<% @reps.each do |rep|%>
  <tr>
    <td><center><%= rep.First %></td>
    <td><center><%= rep.Last %></td>
    <td><center><%= rep.Phone %></td>
    <td><center><%= rep.P_ext %></td>
    <td><center><%= rep.Fax %></td>
    <td><center><%= rep.Email %></td>
    <td><center><%= rep.Delete_Flag %></td>
    <%= link_to 'Edit Rep', edit_rep_path(rep), {:style => 'color:#000000', :class => "css_class"} %>
  </tr>
<%end%>
</table>
</div>
<%= link_to 'Add New Rep', new_rep_path, {:style => 'color:#000000', :class => "css_class"} %>
</center>

<br />

edit.html.erb

<center>
<h1>Editing contact</h1>

<%= render 'form' %>

<%= link_to 'Show', @contact, {:style => 'color:#000000', :class => "css_class"} %> 
<!--<%= link_to 'Back', contacts_path %>
<%= form_tag contacts_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>

  </p>
<% end %>-->
</center>

代表 edit.html.erb

<center>
<h1>Editing rep</h1>

<%= render 'form' %>

<%= link_to 'Show', @rep, {:style => 'color:#000000', :class => "css_class"} %> 
<!--<%= link_to 'Back', contacts_path %>
<%= form_tag contacts_path, :method => 'get' do %>
  <p>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %>

  </p>
<% end %>-->
</center>

0 个答案:

没有答案