Я новичок в Rails и мне было весело, пока я не борюсь с check_box_tag
. Я прочитал много вопросов на этом сайте и до сих пор не решил свою проблему. Я убежден, что это то, чего мне просто не хватает.
У меня есть таблица reportdetail
и таблица buginfo
. Таблица buginfo
представляет собой таблицу ошибок, доступную только для чтения, которую я хочу найти в какой-либо программе. Таблица reportdetail
будет содержать отчеты, которые будут содержать список ошибок (из таблицы buginfo), которые пользователь хочет найти. Я могу иметь много отчетов в таблице подробностей отчета.
class Reportdetail < ActiveRecord::Base
has_many :buginfos
end
class Buginfo < ActiveRecord::Base
belongs_to :reportdetail
end
Вот моя схема. Это просто:
ActiveRecord::Schema.define(:version => 20111221162309) do
create_table "buginfos", :force => true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "reportdetails", :force => true do |t|
t.string "name"
t.integer "buginfo_id"
t.boolean "bug_detected"
t.datetime "created_at"
t.datetime "updated_at"
end
end
И, наконец, мой частичный _form.html.erb для reportdetail
:
<%= form_for(@reportdetail) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<table>
<% Buginfo.find(:all).each do |buginfo| %>
<tr>
<td> <%= check_box_tag("[buginfo_id][]",1,buginfo.id) %> </td>
<td> <%= buginfo.name %> </td>
</tr>
<% end %>
</table>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Форма правильно показывает флажок рядом с каждой ошибкой, и я могу даже установить флажки, однако данные никогда не сохраняются. Я знаю, что первый параметр для check_box_tag
должен быть уникальным, и я уверен, что это правильно. Я знаю, что вторым параметром является значение флажка, но что это на самом деле означает? Я предполагаю, что это означает текущее значение того, была ли выбрана эта ошибка или нет, но так как я еще ничего не выбрал, я не уверен, что делать. В соответствии с документами, которые я прочитал, третий параметр должен быть «флажок установлен или нет?» Но еще раз, к чему это относится? - текущее значение или ...
Если пользователь создает новый reportdetail
и предполагает, что в базе данных buginfos есть 5 ошибок, я бы предположил 5 флажков, которые будут отображаться в / reportdetail / new. Это происходит правильно. Если бы я выбрал 3 ошибки для детализации отчета (установив флажки), я бы предположил, что в базе данных будет создано три записи для представления каждой ошибки, которую хочет включить в отчет. Этого не происходит вообще. Я просто получаю одну запись, а buginfo_id и bug_detected равны нулю.
Любое руководство будет с благодарностью. Спасибо за любую помощь, вы можете дать мне.