ruby-on-rails 重构simple_form表单单选按钮字段

ybzsozfc  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(123)

我有一个User模型,它为newedit操作渲染了一个form的原型(使用simple_form),下面是它的内容:

<div>
  <%= simple_form_for @user do |f| %>
    <%= f.error_notification %>
    <%= f.input :its %>
    <%= f.input :name %>
    <% if action_name == "edit" %>
      <%= f.input :apartment, collection: collection_of(User.apartments), as: :radio_buttons %>
    <% else %>
      <%= f.input :apartment, input_html: {checked: false}, collection: collection_of(User.apartments), as: :radio_buttons %>
    <% end %>
    <%= f.input :flat_no %>
    <%= f.input :mobile %>
    <%= f.input :email %>
    <%= f.button :submit %>
  <% end %>
</div>

字符串
单选按钮字段对于这两个操作是类似的,但有一个区别,我不希望字段中的值在new操作中被预先选择。这是因为我在数据库级别设置了default:,它会自动选择该值。表单中的checked HTML属性会检查菜单中的特定值。要取消选中它,属性checked:必须设置为false或删除。
我想定义一次单选按钮字段,不管它是什么动作。如果action_name == new,它必须被取消选中,否则选中。那么,我如何重构这个字段?
我试着这样做:

<%= f.input :apartment, collection: collection_of(Sabeel.apartments), as: :radio_buttons, input_html: {checked: action_name == "edit"} %>


但这会检查edit表单中单选按钮字段的错误值。它会检查表单中的最后一个值。这是因为HTML中的所有checked属性都设置为值checked,并且单选按钮类型只能通过一个值进行检查,最后一个值正在被检查。但是对于new操作,checked属性没有被设置,因此默认情况下没有选择任何值。
任何其他想法也欢迎!谢谢!

pdtvr36n

pdtvr36n1#

当你创建@user的时候,我会在你的控制器中这样做:

def new
  @user = User.new apartment: nil
end

字符串

相关问题