2013-03-17 2 views
-1

У меня есть эти две моделиформы в отображение имен active_admin не идентификаторы с HAS_ONE ассоциации

def School 
    attr_accesible :user_id 
    belongs_to :user 
end 

def User 
    attr_accesible :name 
    has_one :school 
end 

Я хочу создать новую школу в активном администратора, но когда я должен выбрать пользователь, я хочу показать существующие имена пользователей не являются идентификаторами. Как я могу это сделать?

form do |f| 
    f.inputs "School" do 
     f.input :name 
     f.input :user_id # ??? 
    end 
    f.buttons 
    end 
+0

Ваша ассоциация НАВЕРНОЕ неправильно. Школа должна иметь много пользователей, и пользователь должен принадлежать к школе. – Zippie

+0

Ничего страшного, пользователь является владельцем школы. Я хочу, когда создаю школу в активном админе, чтобы выбрать у пользователей, у которых нет школы. – vladCovaliov

+0

- уникальное имя пользователя? – Zippie

ответ

1

Попробуйте это следующим образом: (я надеюсь, что у вас есть более чем один атрибут в модели школы)

<%= form_for(@school), do |f| %> 
    <%= f.select :user_email, @users_without_schools %> 
    <%= f.submit "Create new school" %> 
<% end %> 

В вашем действии контроллера, где оказывают такую ​​форму:

@school = School.new 
@users_without_schools = User.all.map { |user| user.email if user.school.nil? } 

И в создании вашего действия

@user = User.find_by_email(params[:user_email]) 

Для user_mail создайте виртуальный атрибут:

http://railscasts.com/episodes/16-virtual-attributes

Так что в вашем случае ваш метод сеттер будет что-то вроде:

Class School < ActiveRecord::Base 

    def user_email=(email) 
     user = User.find_by_email(email) 
     self.user_id = user.id 
    end 

end 
+0

, мне это нужно в active_admin, там у меня нет контроллера :(И проблема на самом деле не в том, у пользователя doens't есть школа, больше об отображении имен пользователей вместо их идентификаторов, в моей форме – vladCovaliov

+0

Ну, я дал вам код, как отображать их электронные письма. Вы не должны отображать их имена, так как вы сказали, что они не уникальны Я никогда не работал с Active_admin, если честно, но я не понимаю, как у вашего пользователя не будет контроллера – Zippie

+0

Я думаю, что он имеет один, но не генерируется, находится внутри драгоценного камня или чего-то другого. и об уникальном материале, он будет автоматически совпадать с идентификатором с именем, я выложу свое решение. – vladCovaliov

0
form do |f| 
    f.inputs "School" do 
     f.input :name 
     f.input :user_id, as: :select, collection: User.all 
    end 
    f.buttons 
    end 

Это было не так трудно :(.

А в модели/user.rb

def to_s 
    self.first_name + " " + self.last_name 
end 
+0

О, круто, извините, я так и не понял себя, я был бессвязно со всеми выберите параметры tha t Rails имеет, есть много вариантов. Что вы видите в раскрывающемся меню? User_id-х годов? И вот так вы получаете всех пользователей, но не только пользователей, у которых нет школы. – Zippie

+0

вот так я получаю всех пользователей, но с их именами, а не с идентификаторами. – vladCovaliov

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