2011-02-26 4 views
1

최근에 내지도 기록에 새로운 mapicon_id 필드를 추가하여 사용 가능한 모든 아이콘을 new의 드롭 다운에 표시하고 편집합니다. 각 레코드에는 또한 자바 스크립트를 사용하여 아이콘의 절대 위치 지정을위한 좌표를 줄 수있는 상단 및 왼쪽 정수 필드가 있습니다.단순 정수 필드로 아무 것도 저장하지 않음

이전에 새로운 mapicon_id 필드를 추가하기 전에 상단 및 왼쪽 필드가 올바르게 작동했지만 왼쪽 필드는 저장되지 않습니다. 필드를 편집하거나 왼쪽 값으로 새 레코드를 만들고 저장을 클릭하면 성공한 플래시 메시지가 표시되고 올바르게 리디렉션되지만 필드는 비어있게됩니다. 부분

장소 :

<%= link_to venue do %> 
    <div class="venue_partial"> 

    <div class="venue_icon"> 
     <%= image_tag venue.venuetype.photo.url(:thumb), :class => 'image' %> 
    </div> 
    </div> 
<% end %> 

<%= link_to venue do %> 
    <div id="venue_map_icon_<%= venue.id %>" style="position:absolute;"><%= image_tag venue.mapicon.photo.url(:thumb), :class => 'venue_map_icon' %></div> 
<% end %> 

<script> 
    document.getElementById("venue_map_icon_<%= venue.id %>").style.left= "<%= venue.left %>px"; 
    document.getElementById("venue_map_icon_<%= venue.id %>").style.top= "<%= venue.top %>px"; 
</script> 

, 편집 및 새로운 : 상단 기록 편집에

<%= form_for @venue do |f| %> 
    <p>name: <br> 
    <%= f.text_field :name %></p> 

    <p>mapicon: <br> 
    <%= f.collection_select(:mapicon_id, Mapicon.all, :id, :name) %> 

    <p>top: <br> 
    <%= f.text_field :top %></p> 

    <p>left: <br> 
    <%= f.text_field :left %></p> 

    <%= submit_tag %> 
<% end %> 

개발 로그 100의 왼쪽 값 :이 레코드를 편집 한 후

Started GET "/venues/45-test-place/edit" for 127.0.0.1 at 2011-02-26 11:07:10 +0000 
    Processing by VenuesController#edit as HTML 
    Parameters: {"id"=>"45-test-place"} 
    [1m[35mVenue Load (1.0ms)[0m SELECT `venues`.* FROM `venues` WHERE `venues`.`id` = 45 LIMIT 1 
    [1m[36mArea Load (0.0ms)[0m [1mSELECT `areas`.* FROM `areas`[0m 
    [1m[35mVenuetype Load (0.0ms)[0m SELECT `venuetypes`.* FROM `venuetypes` 
    [1m[36mMapicon Load (1.0ms)[0m [1mSELECT `mapicons`.* FROM `mapicons`[0m 
Rendered venues/edit.html.erb within layouts/application (108.0ms) 
Completed 200 OK in 150ms (Views: 127.0ms | ActiveRecord: 2.0ms) 


Started POST "/venues/45-test-place" for 127.0.0.1 at 2011-02-26 11:07:16 +0000 
    Processing by VenuesController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"By8blc3esfE6A8tnfOmRPn9f4KZb/ctwpjg86La4d1Y=", "venue"=>{"name"=>"test place", "addressline1"=>"", "addressline2"=>"", "addressline3"=>"", "phonenumber"=>"", "area_id"=>"8", "venuetype_id"=>"15", "mapicon_id"=>"1", "top"=>"100", "left"=>"100"}, "commit"=>"Save changes", "id"=>"45-test-place"} 
    [1m[35mVenue Load (1.0ms)[0m SELECT `venues`.* FROM `venues` WHERE `venues`.`id` = 45 LIMIT 1 
    [1m[36mSQL (0.0ms)[0m [1mBEGIN[0m 
    [1m[35mAREL (0.0ms)[0m UPDATE `venues` SET `top` = 100, `left` = 100, `updated_at` = '2011-02-26 11:07:16' WHERE `venues`.`id` = 45 
    [1m[36mSQL (30.0ms)[0m [1mCOMMIT[0m 
Redirected to http://localhost:3000/venues.45-test-place 
Completed 302 Found in 65ms 

맨 위 필드는 100이지만 왼쪽 필드는 비어 있습니다.

장소 모델 :

class Venue < ActiveRecord::Base 
    belongs_to :user 
    has_many :reviews 
    belongs_to :area 
    belongs_to :venuetype 
    belongs_to :mapicon 

    scope :with_type, lambda { |types| 
    types.present? ? where(:venuetype_id => types) : scoped } 

    scope :with_area, lambda { |areas| 
    areas.present? ? where(:area_id => areas) : scoped } 

    def to_param 
    "#{id}-#{name.gsub(/\W/, '-').downcase}" 
    end 

    def self.search(search) 
    if search 
     where('name LIKE ?', "%#{search}%") 
    else 
     scoped 
    end 
    end 
end 

mapicon 모델 :

class Mapicon < ActiveRecord::Base 
    has_many :venues 
    has_attached_file :photo, 
    :styles => { 
     :thumb=> "100x100>", 
     :small => "150x150>", 
     :medium => "300x300>", 
     :large => "400x400>" }, 
    :default_url => '/images/noimage.png' 
end 

UPDATE 나는 위쪽 및 왼쪽 필드를 떨어 toppx을 추가 leftpx 그래서 필드 이름이 아닌

너무 일반적인, 그러나 문제는 여전히 지금은 그 toppx 필드를 저장하지 않을 존재합니다. 또한, toppx 값 대신 venuetype_id 값을 사용하도록 javascript를 변경하면 올바르게 표시됩니다. venuetype_id는 15이고 아이콘은 페이지 상단에서 15px로 표시됩니다.

새로운 마이그레이션 :

class AddToppxAndLeftpxToVenues < ActiveRecord::Migration 

    def self.up 
    add_column :venues, :toppx, :integer 
    add_column :venues, :leftpx, :integer 
    end 

    def self.down 
    remove_column :venues, :toppx 
    remove_column :venues, :leftpx 
    end 
end 

내가 거기 USER_ID의 변화로 일어나는 뭐죠 잘 모릅니다하지만 올바른 사용자에게 정확하고 동료 작동하는 보조 노트의 또 다른 UPDATE

irb(main):002:0> v=Venue.new 
=> #<Venue id: nil, name: nil, addressline1: nil, addressline2: nil, addressline 
3: nil, created_at: nil, updated_at: nil, area_id: nil, user_id: nil, venuetype_ 
id: nil, phonenumber: nil, toppx: nil, leftpx: nil> 
irb(main):003:0> v.name='test23' 
=> "test23" 
irb(main):004:0> v.leftpx='24' 
=> "24" 
irb(main):005:0> v.toppx='42' 
=> "42" 
irb(main):006:0> v.venuetype_id='13' 
=> "13" 
irb(main):007:0> v.area_id='2' 
=> "2" 
irb(main):008:0> v.user_id='6' 
=> "6" 
irb(main):009:0> v.save 
=> true 
irb(main):010:0> Venue.find(:last) 
=> #<Venue id: 55, name: "test23", addressline1: nil, addressline2: nil, address 
line3: nil, created_at: "2011-02-28 18:07:42", updated_at: "2011-02-28 18:07:42" 
, area_id: 2, user_id: 946706424, venuetype_id: 13, phonenumber: nil, toppx: nil 
, leftpx: 24> 
irb(main):011:0> 

.

도움 주셔서 감사합니다.

+0

왼쪽 필드가'POST' 요청 로그에서'100'으로 전달되므로보기 코드가 괜찮을 것입니다. 모델 코드는 어때? 그것도 게시 하시겠습니까? – sarnold

+0

@sarnold 모양을 가지고있어 주셔서 감사합니다. 장소와 mapicon 모델 코드를 추가했습니다. – Dave

+0

나는 완전히 엉망이되어, 모두 너무 쉽게 실패 할 것 같습니다. 컨트롤러 코드는 어떻습니까? 그밖에 컨트롤러 코드를 추가하면 질문을 그 방법으로 질문하는 것을 선호하는 사람들을위한 활동 목록의 맨 위에 가져와야합니다 ... – sarnold

답변

0

Rails가 수행 한 (UPDATE ...) SQL 쿼리가 정상적으로 처리되므로 DB에 올바르게 저장되지 않았거나 Rails가 DB에서 올바르게 반환하지 않아야합니다.

데이터베이스를 살펴보십시오. SELECT * FROM 장소에서 ID = 45 인 곳을보고 그 결과가 올바르게 저장되었는지 확인하십시오. 또한 스키마 게시 (DESCRIBE 개최지).

+0

끝까지 추가했습니다. 내 질문의 콘솔에서 레코드를 추가 할 때 일어나는 일, 고마워. – Dave

0

당신이 사용해야 같은데 toppxleftpx istead 단지 topleft : 루비 bin 폴더에 libmySQL.dll 파일의 새 복사본을 고집하여 고정

<%= form_for @venue do |f| %> 
    <p>name: <br> 
    <%= f.text_field :name %></p> 

    <p>mapicon: <br> 
    <%= f.collection_select(:mapicon_id, Mapicon.all, :id, :name) %> 

    <p>top: <br> 
    <%= f.text_field :toppx %></p> 

    <p>left: <br> 
    <%= f.text_field :leftpx %></p> 

    <%= submit_tag %> 
<% end %> 
관련 문제