Rails 3 показывает текстовое поле, если в нем нет только @

В моем веб-приложении Rails 3 у меня есть текстовое поле Twitter в одной из форм, и оно отображается на странице пользователя.

<%= f.label :twitter, "Twitter Username" %>
<%= f.text_field :twitter, :value => "@" %>

И на странице пользователя:

<% if @user.twitter?  %>
  <div class="twitter"><%= @user.twitter %></div>
<% end %>

Проблема в том, что когда пользователь не вводит свое имя пользователя Twitter в поле, он сохраняет @ в поле и отображает его на странице пользователя. Из-за этого я хотел бы сделать так, чтобы если у него было только @, то он его не отображал.


person Community    schedule 05.06.2011    source источник


Ответы (1)


Похоже, что значение @ сохраняется в базе данных, если пользователь не указывает имя твиттера, верно? Ты уверен, что хочешь этого?

Вы можете в контроллере при сохранении пользователя сделать что-то вроде:

user.twitter = params[:user][:twitter] unless params[:user][:twitter] == "@"

Это гарантирует, что поле User#twitter будет установлено только в том случае, если что-то указано.

Но чтобы конкретно ответить на ваш вопрос, вы можете сделать что-то вроде этого в представлении:

<%= @user.twitter == "@" ? "(not provided)" : @user.twitter %>
person Jits    schedule 05.06.2011