2013-09-05 3 views
0

У меня есть две модели, и я пытаюсь интегрировать его, я могу принести сформировать другую модель, проблема в том, в то время как представление, идентификатор обновляется обнулитьрельсы has_one принадлежит погрешность формы представления

orbituary модель:

class Orbituarysite < ActiveRecord::Base 
attr_accessible :birth_place, :death_place, :dob, :dod, :name, :living_place, :orbiturerimage, :salutation, :user_id 
belongs_to :user 
mount_uploader :orbiturerimage, OrbiturerUploader 
has_one :notice_display 
end 

Примечание модель

class NoticeDisplay < ActiveRecord::Base 
    attr_accessible :message, :notice_type, :orbituarysite_id, :posted_by, :notice_event_places_attributes, :notice_event_contacts_attributes 
    belongs_to :orbituarysite 

end 

orbituary контроллер:

def show 
@orbituarysite = Orbituarysite.find(params[:id]) 
if @orbituarysite.notice_display.nil? 
    @notice_display = @orbituarysite.build_notice_display 
end 
respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @orbituarysite } 
end 

конец

в orbituary сайтов показать вид:

 <% if @orbituarysite.notice_display.nil? %> 
     <%= render 'notice_displays/form' , :remote => true %> 
     <% end %> 

в то время как я отправить форму я получаю следующую проблему, т.е. aftter представления я перенаправлять его на orbituary страницы сайтов, так что я получаю это сервер ,

Started GET "/orbituarysites/1" for 127.0.0.1 at 2013-09-05 08:58:45 +0530 
Processing by OrbituarysitesController#show as HTML 
Parameters: {"id"=>"1"} 
User Load (1.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
Orbituarysite Load (1.8ms) SELECT "orbituarysites".* FROM "orbituarysites" WHERE "orbituarysites"."id" = $1 LIMIT 1 [["id", "1"]] 
NoticeDisplay Load (0.8ms) SELECT "notice_displays".* FROM "notice_displays" WHERE "notice_displays"."orbituarysite_id" = 1 LIMIT 1 
History Load (0.9ms) SELECT "histories".* FROM "histories" WHERE "histories"."orbituarysite_id" = 1 LIMIT 1 
(0.5ms) BEGIN 
(0.9ms) UPDATE "histories" SET "orbituarysite_id" = NULL, "updated_at" = '2013-09-05 03:28:46.214455' WHERE "histories"."id" = 2 
(25.0ms) COMMIT 
Rendered histories/_form.html.erb (125.2ms) 
Rendered memories/_form.html.erb (9.1ms) 
Rendered condolences/_form.html.erb (14.4ms) 
Rendered orbiturer_share_images/_form.html.erb (6.2ms) 
Rendered orbituarysites/show.html.erb within layouts/application (162.6ms) 
Rendered orbituarysites/_form.html.erb (26.4ms) 
Completed 200 OK in 944ms (Views: 504.5ms | ActiveRecord: 64.5ms) 

как изменить это, потому что получить ложные в

 <% if @orbituarysite.notice_display.nil? %> 

но в консоли я получаю истинное, когда она равна нулю, и ложно, когда есть содержание

Пожалуйста, помогите мне решить эту

+0

потому что вы создали 'notice_display' в действии show, ваш' notice_display' никогда не будет ник, поэтому '@ orbituarysite.notice_display.nil?' В вашем представлении всегда будет возвращать false. – Bigxiang

+0

Сделайте себе одолжение и [примите некоторые ответы] (http://stackoverflow.com/users/1439147/anbazhagan-p?tab=questions&sort=newest). – zeantsoi

ответ

0

.nil? не всегда гарантирует правду. Использовать @ orbituarysite.notice_display.present?

По существу, все возвраты nil истинны, потому что в рубине все вещи правдивы, кроме false и nil. Итак, вы всегда будете возвращать TRUE, потому что он вернет нуль. :-)

Смежные вопросы