kat*_*tie 2 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我正在尝试保存模型电影的表单。但是在表单的末尾,我有两个单选按钮,当您单击每个按钮时,它们将显示额外的隐藏字段(我最初隐藏这些字段)。用户应该只选择一个单选按钮单击并填充额外的给定字段(制片人或导演字段)。此模型中的所有字段都是validated_presence_of。问题是当您单击一个单选按钮并填写给定的文本字段时,这意味着另一个字段隐藏在另一个字段中单选按钮将为空白,因此表单不会被提交(因为validated_presence_of)。我该如何解决这个问题?谢谢
<%= form_for @movie ,:url=>{:action =>"create"} do |f|%>
<%= f.error_messages %>
<%=f.text_field :title%>
<%= f.text_field :description%>
<%= f.radio_button :drama "drama" %>
<div style="display:none"><%= f.text_field :director %></div>#this is displayed with javscript when you click radio button
<%= f.radio_button :action "action" %>
<div style="display:none"><%= f.text_field :producer %></div> #this is displayed with javscript when you click radio button
<%= f.submit "post"%>
Run Code Online (Sandbox Code Playgroud)
模型
class Movie < ActiveRecord::Base
validates_presence_of :title
validates_presence_of :description
validates_presence_of :director
validates_presence_of :producer
end
Run Code Online (Sandbox Code Playgroud)
模式
create_table "movies", :force => true do |t|
t.string "title"
t.text "description"
t.boolean "drama",
t.boolean "action"
end
Run Code Online (Sandbox Code Playgroud)
听起来您好像在说所有字段都是必填字段(所有字段都有validates_presence_of),因此您的表单不会提交,因为总是有一个字段不存在。在这种情况下当然不会。
显而易见的解决方案是:不要强制每个字段都存在。也许您想要验证 :director 和 : Producer 中至少之一是否存在。看一下条件验证。
预计到达时间:示例
validates_presence_of :director, :if => "producer.blank?"
validates_presence_of :producer, :if => "director.blank?"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1384 次 |
| 最近记录: |