在注册页面上,我为每个用户制作通信首选项,表示其他人如何与该人联系,例如:"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>
请建议我哪里弄错了,等你答复。感谢。
答案 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>
然后对每次通讯重复一遍。请记住,不要将该代码放在循环中。