我使用脚手架生成了一个模型。
rails g scaffold attendance ename:string entertime:datetime sl:boolean mrgsl:boolean evesl:boolean halfday:boolean
现在我想用simple_form显示这个,我想在它们之间建立这些关系:
SL - >有两种类型i)mrgsl。 ii)evesl。
所以当选择sl(check_box)时,它会显示两个radio_buttons,并选择两个中的任何一个。 半天也是一个check_box。
<%= simple_form_for @attendance, :html => { :class => 'form-horizontal' } do |f| %>
<%= f.input :ename %>
<%= f.input :entertime, as: :time %>
<%= f.input :sl, as: :check_box %>
<%= f.input :mrgsl, as: :radio_button %>
<%= f.input :evesl, as: :radio_button %>
<%= f.input :halfday, as: :check_box %>
<div class="form-group">
<div class='col-md-offset-2 col-md-10'>
<%= f.submit nil, :class => 'btn btn-primary' %>
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
attendances_path, :class => 'btn btn-default' %>
</div>
</div>
<% end %>
这就是我试图这样做的方法,但它不起作用,。
RuntimeError in Attendances#new
Showing /home/pallavsharma/Workspace/crm/app/views/attendances/_form.html.erb where line #4 raised:
No input found for check_box
1<%= simple_form_for @attendance, :html => { :class => 'form-horizontal' } do |f| %>
2<%= f.input :ename %>
3<%= f.input :entertime, as: :time %>
4<%= f.input :sl, as: :check_box %>
5<%= f.input :mrgsl, as: :radio_button %>
6<%= f.input :evesl, as: :radio_button %>
7<%= f.input :halfday, as: :check_box %>
有什么可行的方法。
答案 0 :(得分:1)
首先,如果我正确理解您所写的内容,您可能需要重新构建模型以更好地适应您的逻辑。
您想为用户提供三个选项:
&#34; no ls&#34;
&#34; ls with mrgsl&#34;
&#34; ls with evesl&#34;
你的模特和这些布尔人说他们有8个。但如果他们没有选择 ls 你就不希望他们选择 mrgsl 并且你不希望他们选择 mrgsl 和 evesl ,我是对的吗?
如果您不想在每次向&#34; ls&#添加新选项时不必重新迁移数据库,那么这将更有意义(并使您的代码更容易维护) 34 ;.所以,我正在考虑制作&#34; ls&#34;模型中的字符串类型数据。然后你可以给它任何你想要的价值:&#34; evesl&#34;,&#34; mrgsl&#34;,&#34;禁用&#34;然后,添加一些没有任何困难。 然后,您可以在控制器中处理此问题。你不会做
Attendance.where(mrgsl: true)
但是
Attendance.where(ls: "msgrl")
无论如何,要回答你的问题:为了做你想做的事情(如果勾选复选框就会出现你的单选按钮),你需要写一些JavaScript。
您可以在this thread中找到所有内容,使其按您希望的方式运行。
最后,要使用一些simple_form电源,您可以为单选按钮设置"collection"。
希望它有所帮助!