В моем приложении rails есть форма для отправки.
Я использую устаревшую базу данных, в которой значение идентификатора отправки извлекается из таблицы последовательности. Это значение последовательности используется в качестве первичного ключа для моей отправки.
Итак, в моей форме я хочу передать значение последовательности как первичное, но оно не работает
new.html.erb:
<% form_for @submission, :html => { :multipart => true } do |f| %>
<%= f.hidden_field :SUB_OID, :value => $temporary_id %>
<% end %>
submission.rb:
class SubmissionsController < ApplicationController
#retrieve id for new submission
result = ActiveRecord::Base.connection.execute('SELECT SEQ_TEMP_ID FROM ref_sequences')
inc_result = (result.fetch_row.first)
#increment temporary id by 1
$temporary_id = (inc_result.to_i) + 1
def create
@submission = Submission.new(params[:submission])
###@submission.SUB_OID= $temporary_id ###
if @submission.save
#after temp submission is saved, update id in ref_sequences table#
ActiveRecord::Base.connection.execute("UPDATE ref_sequences SET SEQ_TEMP_ID = SEQ_TEMP_ID + 1")
flash[:notice] = 'Submission was successfully created'
redirect_to show_submission_path(@submission.SUB_OID)
else
render :action => 'new'
end
end
end
Я заметил, что следующая строка не работает:
<%= f.hidden_field :SUB_OID, :value => $temporary_id %>
Однако, чтобы передать значение последовательности в качестве идентификатора отправки, я должен поместить следующую строку в функцию def create:
@submission.SUB_OID= $temporary_id
Теперь я хочу знать, могу ли я передать первичный идентификатор представления на самой странице new.html.erb вместо объявления его в функции def create.
Большое спасибо за внимание к этому ..
ура