2014-01-02 2 views
0

Ruby on Rails 3, у меня есть страница редактирования с двумя представлениями select_tag. У пользователей есть атрибут: attend = "Да", а у другого есть пользователи, у которых есть атрибут: attend = "No" или nil. Я пытаюсь получить представления select_tag для создания или обновления таблицы сертификатов для пользователя. На данный момент я знаю, что это POSTing идентификатор пользователя и имя. Я не знаю, как заставить контроллер или модель взять идентификатор пользователя и создать или обновить с помощью атрибута: attend атрибута «Да» или «Нет». Приложение создаст новую запись с правильным идентификатором пользователя, но не с: посещает, поскольку она не находится в моем представлении select_tag.Добавление или изменение записи с идентификатором пользователя

Вот мое редактирование:

<%= form_for @untrained do |f| %> 
      <p> Trained Users </p> 
      <%= select_tag "certificate[user_id]", options_for_select(@current_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %> 
      <%= f.submit "Un-Train", class: "btn btn-large btn-primary" %> 
     <% end %> 
     <%= form_for @trained do |f| %> 
      <p> Non-Trained Users </p> 
      <%= select_tag "certificate[user_id]", options_for_select(@non_trained.collect{|x| [x.name, x.id]}), {:multiple => :multiple} %> 
      <%= f.submit "Trained", class: "btn btn-large btn-primary" %> 
     <% end %> 

Вот мой контроллер:

@trained = Certificate.new(params[:certificate]) 
@untrained = Certificate.update(params[:user_id]) 

Вот моя модель:

attr_accessible :attend, :pass, :user_id 
belongs_to :user 
validates :user_id, presence: true 

Как установить контроллер для создания или обновления новая запись: присутствовать как «Да»? Как вы обновляете запись: посещаете как «Нет»? Спасибо

ответ

1

Есть у судимого в контроллере после

if @trained.save 

положил

@trained.update_attributes(attend: "yes") 

или нет в зависимости от вида и хочет.

Также рассмотрите это для метода создания/обновления в рельсах.

create_or_update method in rails

+0

Можете ли вы показать, как делать и проверить? Если вы видите его на странице, Rails вытаскивает его из базы данных. В вашем контроллере вы бы @trained = Certificate.new (params [: certificate]) @ training.update_attributes (присутствовать: «да») – Leon

+0

В моем журнале показано Сохранение POST в БД. Атрибуты обновления не регистрируются. Когда я запускаю Certificate.all, записи показывают нуль. Мои представления используют несколько переменных экземпляра в циклах. У меня даже есть проверка if, проверяющая «Yes» Certificate.find_by_user_id (@trained_user_id) .attend == «Да», и это показывает их на мой взгляд ??? – DDDD

+0

попробуйте добавить это в свою форму <% = f.hidden_field: attend,: value => «Да»%>, а затем проверьте параметры и обновите столбец с этим. – Leon

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