Rails: как получить входные данные не для модели, преобразовать их в атрибут модели и сохранить эту модель - PullRequest
0 голосов
/ 02 октября 2011

Фон:

  1. У меня есть форма form_for, сопоставленная с моделью с именем List.
  2. Список имеет атрибуты: имя, идентификатор, идентификатор приемника, assigner_id.
  3. Iхочу, чтобы пользователь (или назначитель списка) мог выбирать получателя списка.
  4. Я хочу, чтобы назначитель ввел электронную почту, а не идентификатор получателя.

Проблема:

  1. Я не уверен, как использовать форму для получения адреса электронной почты, выполнить запрос «User.find_by_email (xx) .id», используя этот адрес электронной почты, а затем назначитьвозвращенный идентификатор в атрибут приемника List.

Текущий код:

lists_conroller.rb

class ListsController < ApplicationController

   before_filter :current_user

   def new
      @list = List.new
   end

   def create
      @list = List.new(params[:list])
      @list.assigner = @current_user
      #@list.receiver = User.find_by_id(:receiver_id)
      @list.save
      redirect_to @list
   end

   def show
      @list = List.find(params[:id])

   end

   def update

@list = List.find(params[:id])
   end

end

lists \ new.html.erb

<%= form_for @list do |f| %>

    <%= f.label :name, 'Name'%>
    <%= f.text_field :name %>

    <%= f.label :receiver_id, 'Receiver ID'%>  
    **I want this to be the e-mail input, rather than the integer id.**
    <%= f.text_field :receiver_id %><br />

    <%= f.submit :submit %>

<% end %>

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Ответ на мой вопрос "Виртуальные атрибуты ..."

0 голосов
/ 02 октября 2011

Пользователь создает новый список, с ним в качестве правопреемника. В этом процессе создания также должен быть получатель. Я правильно понял?

Я думаю, что получатель должен быть выбран из списка возможных получателей (может быть, поле выбора? Это будет зависеть от количества возможных получателей, хотя, я бы не хотел перечислять там более 1000 пользователей - если есть много пользователей Вы можете выполнить поиск ajax, когда пользователь вводит несколько букв)

Затем назначитель выбирает пользователя (с соответствующим значением id), и все должно быть в порядке.

...