2015-11-07 58 views
1

我有一對單選按鈕,我想預先將checked值分配給我的new操作。現在我有條件地呈現兩個部分。一個部分具有單選按鈕與checked屬性和其他與沒有屬性可言:有條件地在Rails中設置html參數

<%= 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

使用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 %> 

我看不出有什麼你試圖從你的偏好(他們都是相同的) - 但如果你想創建「檢查」的條件,你可以使用以下內容:

<%= checked = action_name == "new" 
    <%= f.radio_button :status, :downvoted, checked: checked %> 

這將根據操作是否爲new將值設置爲「true」或「false」。