我有一对单选按钮,我想要仅为checked
操作预先指定new
值。现在我有条件地呈现两个部分。一部分具有带checked
属性的单选按钮,另一部分具有非属性:
<%= form_for([@restaurant, @dish_review], url: :restaurant_dish_reviews) do |f| %>
<% if action_name == "new" %>
<%= render "status_buttons_checked", f: f, dish: @dish %>
<% else %>
<%= render "status_buttons", f: f %>
<% end %>
<% end %>
_ status_buttons_checked
<div class="field">
<%= f.radio_button :status, :upvoted, checked: current_user.voted_up_on?(dish) %>
<%= f.label :status, value: :upvoted %>
<%= f.radio_button :status, :downvoted, checked: current_user.voted_down_on?(dish) %>
<%= f.label :status, value: :downvoted %>
</div>
_ statsus_buttons
<div class="field">
<%= f.radio_button :status, :upvoted, checked: current_user.voted_up_on?(dish) %>
<%= f.label :status, value: :upvoted %>
<%= f.radio_button :status, :downvoted, checked: current_user.voted_down_on?(dish) %>
<%= f.label :status, value: :downvoted %>
</div>
我想知道在Rails中是否有任何方法我可以在radio_button
参数中插入条件而不是创建两个部分。我想要类似于下面显示的内容,但遇到模板错误:
<%= f.radio_button :status, :downvoted, if action_name == "new" current_user.voted_down_on?(dish) %>
答案 0 :(得分:0)
使用form_for
时,您使用的表单方法会自动填充适合您属性的数据。虽然我不知道这是否适用于checked
值,但这意味着如果您有以下内容:
<%= form_for @user do |f| %>
<%= f.text_field :name %>
<% end %>
... :name
将从您的@user
对象中填充(如果它是new
,则不会插入任何数据。)
-
这意味着,如果您使用form_for
,则应该能够使用传递给视图的数据填充checked
值:
<%= form_for [@restaurant, @dish_review] do |f| %>
<%= f.radio_button :status, :upvoted, checked: current_user.voted_up_on? @dish %>
<%= f.radio_button :status, :downvoted, checked: current_user.voted_down_on? @dish %>
<% end %>
我没有看到你试图从你的部分中获得什么(他们都是相同的) - 但如果你想创造&#34;检查&#34;在条件方面,您可以使用以下内容:
<%= checked = action_name == "new"
<%= f.radio_button :status, :downvoted, checked: checked %>
这会将值设置为&#34; true&#34;或&#34;假&#34;取决于操作是否为new
。