Ruby on rails 如何在rails中更新自定义表单?

Ruby on rails 如何在rails中更新自定义表单?,ruby-on-rails,forms,Ruby On Rails,Forms,我有下面的型号 t.string "name" t.date "start_at" t.date "end_at" t.datetime "created_at" t.datetime "updated_at" t.string "trainer_id" t.string "venue_id" t.string "description" t.boolean "holy" t.integer "nxt" t.string "count

我有下面的型号

 t.string   "name"
 t.date     "start_at"
 t.date     "end_at"
 t.datetime "created_at"
 t.datetime "updated_at"
 t.string   "trainer_id"
 t.string   "venue_id"
 t.string   "description"
 t.boolean  "holy"
 t.integer  "nxt"
 t.string   "country_id"
 t.string   "status"
在我的表单中,Hear状态可以是“1”或“0”,我通过下拉列表加载了它,如下所示

enter code here
<%remote_form_for @event, :url => {:controller => 'events', :action => 'update'}  do |f| %>
  <p>
   <%= f.label :name %><br />
   <%= f.text_field :name %>
  </p>
  <p>
   <%= f.label :start_at %><br />
   <%= calendar_date_select_tag "event[start_at]", "", :valid_date_check => "date.getDay() != 0 && date.getDay() != 6 && date.stripTime() > (new Date()).stripTime() ", :value=> @event["start_at"] %>
  </p>
  <p>
   <%= f.label :end_at %><br />
   <%= calendar_date_select_tag "event[end_at]", "", :valid_date_check => "date.getDay() != 0 && date.getDay() != 6 && date.stripTime() > (new Date()).stripTime()", :value=> @event["end_at"] %>
  </p>
  <p>
   <%= f.label :trainer_id %><br />
       <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => 'Select a Trainer'})%>
  </p>  
  <p>
   <%= f.label :country_id %><br />
       <%= collection_select("event", "country_id", @countries , :id, :name, {:prompt => true}, :id => 'xx') %>
       <%= observe_field('xx', :url => { :controller => 'countries', :action => 'update_city_menu' },
              :update => 'city_field_div',
      :with => "'myval=' + escape(value)") 
      %>
       <div id="city_field_div">
       <%= collection_select("event", "venue_id", Venue.find(:all,:conditions=> [ "country_id = ?", (session[:CountID]).to_s]) , :id, :place, {:prompt => true}) %>
       </div>
  <p>
       <%= f.label :status %><br/>
       <select id="status">
       <option value="0"<%= session[:status] == 1 ? ' selected="selected"' : '' %>>Completed</option>
       <option value="1"<%= session[:status] == 0 ? ' selected="selected"' : '' %>>Not Completed</option>
       </select>
  </p>  
  <p>
   <%= f.submit 'Update' %>
  </p>       
<% end %>
在此处输入代码
{:controller=>events',:action=>update'}do | f |%>



“date.getDay()!=0&&date.getDay()!=6&&date.stripTime()>(新日期()).stripTime()”,:value=>@event[“开始时间”]%>


“date.getDay()!=0&&date.getDay()!=6&&date.stripTime()>(新日期()).stripTime()”,:value=>@event[“结束于”]%>


“选择培训师”})%>


true},:id=>'xx')%> {:controller=>'countries',:action=>'update\u city\u menu'}, :update=>'city\u field\u div', :with=>“'myval='+转义(值)”) %> [“国家/地区id=?”,(会话[:CountID])。到],:id,:地点,{:prompt=>true})%>
完整的 未完成


所有数据都可以正确查看,但问题是当我尝试更新状态时,它不会更新状态字段[所有其他数据都会完全更新。有人能解释一下这个错误吗?即使它没有通过错误消息

我找到了答案,我们可以使用选择状态

    <%= select( "event", "status", { "Completed" => "1", "Not Completed" => "0"}) %>
“1”、“未完成”=>“0”})%>

这将正确执行所有操作。:)

这是因为如果您将原始实现从问题更改为也应该工作,则param将作为事件[:status]发布,假设您在控制器中从params执行批量分配。