Я создаю приложение Rails 3 с доской вакансий, где работники могут подавать заявки на работу. У меня следующие ассоциации:
Job:
has_many :bids
has_many :workers, :through => :bid
Bid:
belongs_to :job
belongs_to :worker
Worker:
has_many :bids
has_many :jobs, :through => :bid
У меня есть форма на странице «Показать вакансию», в которой работники могут подавать заявки. В контроллерах у меня есть следующее:
Job Controller:
def show
@bid = current_worker.bids.build
end
Bid Controller:
def create
@bid = current_worker.bids.build(params[:bid])
@bid.save
end
С приведенным выше кодом отправленная заявка не будет правильно сохранена, поскольку в ней отсутствует job_id:
1) Как правильно сохранить ставку с ОБОИМ идентификатором job_id и worker_id?
2) (У меня возникли проблемы с передачей job_id из метода show контроллера заданий в метод create контроллера ставок) — безопасно ли передавать job_id в переменной сеанса?
Для справки форма заявки выглядит так:
<%= form_for(@bid) do |f| %>
<%= f.label :min_price, "Minimum Price" %>
<%= f.text_field :min_price %>
<%= f.label :fee %>
<%= f.text_field :fee %>
<%= f.label :comments %>
<%= f.text_area :comments, placeholder: "Comments..." %>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
bids_controller#create
не должен вызыватьnew
вместоbuild
? Почему бы просто не добавить<%= f.hidden_field :job_id, @job.id %>
кform_for(@bid)
? - person coreyward   schedule 31.05.2013