Ruby on rails 控件在RubyonRails中重复

Ruby on rails 控件在RubyonRails中重复,ruby-on-rails,Ruby On Rails,在注册页面上,我为每个用户设置通信首选项,表示其他人如何与该用户联系,例如:“电话”、“电子邮件”、“Skype”,在设置页面上,我获取文本字段中的所有通信。如果用户有3种通信方式,即“电话”、“电子邮件”、“Skype”。则会显示如下: Phone: [1234567895] Email: [abc@ab.com] Skype: [abc ] 假设方括号“[]”是文本字段,但它显示如下: Phone: [1234567895] Email: [

在注册页面上,我为每个用户设置通信首选项,表示其他人如何与该用户联系,例如:
“电话”、“电子邮件”、“Skype”
,在设置页面上,我获取文本字段中的所有通信。如果用户有3种通信方式,即
“电话”、“电子邮件”、“Skype”。
则会显示如下:

Phone:   [1234567895]
Email:   [abc@ab.com]
Skype:   [abc       ]
假设
方括号“[]”是文本字段
,但它显示如下:

Phone:   [1234567895]
Email:   [          ]
Skype:   [          ]
Phone:   [          ]
Email:   [abc@ab.com]
Skype:   [          ]
Phone:   [          ]
Email:   [          ]
Skype:   [abc       ]
下面是我新的.html.erb设置页面:

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

电话:
电邮:
Skype:
网站:
推特:
电话:
“电话”%>
电邮:
“电子邮件”%>
Skype:
“Skype”%>
网站:
“网站”%>
推特:
“推特”%>

请告诉我哪里出错,等待您的回复。谢谢。

你的代码的问题是你在
@user\u 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>

电话:
“电话”%>

然后在每次交流中重复这一点。请记住,不要将该代码放在循环中。

我不清楚您的问题:是不是,如何从表单中删除重复的字段?我无法一次向我显示文本字段的电话、电子邮件和Skype值。第一次,它在文本字段中只显示电话值,其他两个文本字段为空;第二次,它在文本字段中只显示电子邮件值,其他两个文本字段为空,与第三次相同:这个问题不清楚!