控制在铁轨上的红宝石中重复

时间:2014-03-10 04:55:06

标签: ruby-on-rails

在注册页面上,我为每个用户制作通信首选项,表示其他人如何与该人联系,例如:"Phone","Email","Skype"在设置页面上,我将获得text_field中的所有通信。如果用户有3个通信,即"Phone","Email","Skype".那么它会显示如下:

Phone:   [1234567895]
Email:   [abc@ab.com]
Skype:   [abc       ]

假设square brackets "[ ]" is text_field,但它在下面显示:

Phone:   [1234567895]
Email:   [          ]
Skype:   [          ]
Phone:   [          ]
Email:   [abc@ab.com]
Skype:   [          ]
Phone:   [          ]
Email:   [          ]
Skype:   [abc       ]

以下是我新的.html.erb的setings页面:

   <table>
    <% if @user_communication.blank? %>

        <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">

            Phone:
         </td>
         <td style="font-size: large; color: #212121;">

            <%= text_field :tf_phone, placeholder: 'Phone' %>

         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Email:
         </td>
         <td style="font-size: large; color: #212121;">

            <%= text_field :tf_email, placeholder: 'Email' %>

         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Skype:
         </td>
         <td style="font-size: large; color: #212121;">

            <%= text_field :tf_skype, placeholder: 'Skype' %>

         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Website:
         </td>
         <td style="font-size: large; color: #212121;">

            <%= text_field :tf_website, placeholder: 'Website' %>

         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Twitter:
         </td>
         <td style="font-size: large; color: #212121;">

            <%= text_field :tf_twitter, placeholder: 'Twitter'  %>
         </td>
      </tr>
    <%else %>
    <% @user_communication.each do |user_com| %>
    <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Phone:
         </td>
         <td style="font-size: large; color: #212121;">
            <% if user_com.CommunicationMode.to_s == "Phone" %>
            <%= text_field_tag :tf_phone, user_com.CommunicationDetail %>
            <% else %>
            <%= text_field :tf_phone, :placeholder => "Phone" %>
            <% end %>
         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Email:
         </td>
         <td style="font-size: large; color: #212121;">
            <% if user_com.CommunicationMode.to_s == "Email" %>
            <%= text_field_tag :tf_email, user_com.CommunicationDetail %>
            <% else %>
            <%= text_field :tf_email,:placeholder => "Email" %>
            <% end %>
         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Skype:
         </td>
         <td style="font-size: large; color: #212121;">
            <% if user_com.CommunicationMode.to_s == "Skype" %>
            <%= text_field_tag :tf_skype, user_com.CommunicationDetail %>
            <% else %>
            <%= text_field :tf_skype,:placeholder => "Skype" %>
            <% end %>
         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Website:
         </td>
         <td style="font-size: large; color: #212121;">
            <% if user_com.CommunicationMode.to_s == "Website" %>
            <%= text_field_tag :tf_website, user_com.CommunicationDetail %>
            <% else %>
            <%= text_field :tf_website,:placeholder => "Website" %>
            <% end %>
         </td>
      </tr>
      <tr style="text-align: left; vertical-align: middle;">
         <td style="font-size: large; color: #212121;">
            Twitter:
         </td>
         <td style="font-size: large; color: #212121;">
            <% if user_com.CommunicationMode.to_s == "Twitter" %>
            <%= text_field_tag :tf_twitter, user_com.CommunicationDetail%>
            <% else %>
            <%= text_field :tf_twitter, :placeholder => "Twitter" %>
            <% end %>
         </td>
      </tr>
    <% end %>
    <%end %>
</table>

请建议我哪里弄错了,等你答复。感谢。

1 个答案:

答案 0 :(得分:0)

您的代码存在的问题是您正在循环遍历@user_communication并且在循环内部,您正在显示所有通信。删除循环并将代码更改为以下

<tr style="text-align: left; vertical-align: middle;">
  <td style="font-size: large; color: #212121;">
    Phone:
  </td>
  <td style="font-size: large; color: #212121;">
    <% phone = @user_communication.detect { |uc| uc.CommunicationMode.to_s == 'Phone' } %>
    <% if phone %>
      <%= text_field_tag :tf_phone, user_com.CommunicationDetail %>
    <% else %>
      <%= text_field :tf_phone, :placeholder => "Phone" %>
    <% end %>
  </td>
</tr>

然后对每次通讯重复一遍。请记住,不要将该代码放在循环中。