1

私の見解では異なる確認メッセージを表示するために、この醜い重複に直面しています。

<% if current_user.password.nil? and current_user.services.count == 1 %>
  <%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => 'Remove this service will delete your account, are you sure?', :method => :delete %>
<% else %>
  <%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => 'Are you sure you want to remove this authentication option?', :method => :delete %>
<% end %>

これを回避する方法があるかどうか知りたいですか?

ありがとうございました!

編集:

ActionView::Template::Error (/Users/benoit/rails_projects/website/app/views/services/index.html.erb:15: syntax error, unexpected ',', expecting ')'
...e this authentication option?', :method => :delete, :class =...
...                               ^):
    12:         <% for service in @services %>
    13:           <div class="service">
    14:             <%= image_tag "logo_#{service.provider}.png", :class => "left" %>
    15: <%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => current_user.password.nil? and current_user.services.count == 1 ? 'Remove this service will delete your account, are you sure?' : 'Are you sure you want to remove this authentication option?', :method => :delete, :class => "remove" %>
    16: 
    17:             <div class="clear"></div>
    18:           </div>
4

2 に答える 2

4

実行するだけです:

<%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => current_user.password.nil? and current_user.services.count == 1 ? 'Remove this service will delete your account, are you sure?' : 'Are you sure you want to remove this authentication option?', :method => :delete, :class => "remove" %>

または、これをより理解しやすくするために:

<% confirm_message = current_user.password.nil? and current_user.services.count == 1 ? 'Remove this service will delete your account, are you sure?' : 'Are you sure you want to remove this authentication option?' %>

<%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => confirm_message, :method => :delete, :class => "remove" %>

私はRubyの三項演算子を使用しています。確認してください:http://invisibleblocks.wordpress.com/2007/06/11/rubys-other-ternary-operator/

于 2011-05-20T18:42:57.563 に答える
3

ヘルパー関数を作成できます。

def auth_confirm_delete(current_user)
  if current_user.password.nil? and current_user.services.count == 1
      'Remove this service will delete your account, are you sure?'
  else 
      'Are you sure you want to remove this authentication option?'
  end
end 

そして、それはビューでより良く見えます:

<%= link_to "Disconnect #{service.provider.capitalize}", service, :confirm => auth_confirm_delete, :method => :delete %>
于 2011-05-20T20:14:46.073 に答える