0

こんにちは、アプリケーション コール「app」を作成しています。これまでのところ、足場の「連絡先」を取得し、モデル呼び出し「住所」を追加するだけです (住所には番地、都市、地域、郵便番号、国 5 の属性があります)。1 つの連絡先に 1 つまたは複数の住所を含めることができます。これが私の作品です。ルート.rb

 App::Application.routes.draw do
  resources :contacts
  resources :taggings
  resources :addresses
  root :to => 'Contacts#index'
end

モデル/contact.rb

    class Contact < ActiveRecord::Base
  attr_accessible :Email, :Firstname, :Lastname, :Mobilephone, 
  has_many :taggings, :dependent => :destroy
  has_many :addresses, :through => :taggings
  validates_presence_of :Firstname, :Lastname
  attr_writer :address_street, :address_city, :address_region, :address_zipcode, :address_country
  after_save :assign_street, :assign_city, :assign_region, :assign_zipcode, :assign_country

  def address_streets
    @address_streets || addresses.map(&street).join('')
  end

  def address_citys
    @address_citys || addresses.map(&city).join('')
  end

  def address_regions
    @address_regions || addresses.map(&region).join('')
  end

  def address_zipcode
    @address_zipcodes || addresses.map(&zipcode).join('')
  end

  def address_countrys
    @address_countrys || addresses.map(&country).join('')
  end



  def assign_streets
    if @assign_streets
      self.addresses = @assign_streets.split(/\s+/).map do |street|
        Address.find_or_create_by_street(street)
      end
    end
  end

  def assign_citys
    if @assign_citys
      self.addresses = @assign_citys.split(/\s+/).map do |city|
        Address.find_or_create_by_city(city)
      end
    end
  end

  def assign_regions
    if @assign_regions
      self.addresses = @assign_regions.split(/\s+/).map do |region|
        Address.find_or_create_by_region(region)
      end
    end
  end

  def assign_zipcodes
    if @assign_zipcodes
      self.addresses = @assign_zipcodes.split(/\s+/).map do |zipcode|
        Address.find_or_create_by_zipcode(zipcode)
      end
    end
  end

  def assign_countrys
    if @assign_countrys
      self.addresses = @assign_countrys.split(/\s+/).map do |country|
        Address.find_or_create_by_country(country)
      end
    end
  end
end

モデル/tagging.rb

class Tagging < ActiveRecord::Base
  attr_accessible :Address_id, :Contact_id
  belongs_to :contact
  belongs_to :address
end

モデル/アドレス.rb

class Address < ActiveRecord::Base
  attr_accessible :City, :Country, :Region, :Street, :Zipcode
  has_many :tagging, :dependent => :destroy
  has_many :contact, :through => :taggings
end

以下のコードを追加したため、 view/contact/_form.html.erb が機能しなくなりました!!:

   <form>
    <p>
    <%= f.label :street %><br />
    <%= f.text_field :address_street %>
    </p>
  </form>

そして contact_controllor.rb 私は何も触れていません。サーバーを起動して「新しい連絡先の作成」レールにロードしようとすると、教えてくれます

SyntaxError in ContactsController#new

/media/sf_VM_working/app/app/models/contact.rb:3: syntax error, unexpected tSYMBEG, expecting keyword_do or '{' or '('
  has_many :taggings, :dependent => :destroy
            ^
/media/sf_VM_working/app/app/models/contact.rb:33: syntax error, unexpected keyword_do_block, expecting keyword_end
      self.addresses = @assign_streets.split(/\s+/).map do |street|
                                                          ^
/media/sf_VM_working/app/app/models/contact.rb:41: syntax error, unexpected keyword_do_block, expecting keyword_end
      self.addresses = @assign_citys.split(/\s+/).map do |city|
                                                        ^
/media/sf_VM_working/app/app/models/contact.rb:45: syntax error, unexpected keyword_end, expecting $end

app/controllers/contacts_controller.rb:1:in `<top (required)>'

誰かが問題の場所を確認するのを手伝ってくれませんか、私は良いものではありません:'(...ありがとう

4

1 に答える 1

2

の 2 行目に余分なコンマがありますcontact.rb- 最初のエラー メッセージはこれを示しています (3 行目に到達したときに検出されます)。

/media/sf_VM_working/app/app/models/contact.rb:3: 構文エラー、予期しない tSYMBEG、keyword_do または '{' または '(' が必要です has_many :taggings, :dependent => :destroy

属性を小文字(:email, :firstnameの代わりに:Email, :Firstname)で記述して、問題を解決してください。

于 2013-04-11T14:21:28.943 に答える