Как изменить текстовое поле в выпадающем списке? - PullRequest
0 голосов
/ 26 апреля 2011
<p>
    <%= f.label :website_name %><br />
    <%= f.text_field :website_name %>
  </p>
  <p>
    <%= f.label :website_type %><br />
    <%= f.select :website_type, Media::ALL_MEDIA_TYPES, :include_blank => true %>
  </p>

  <p>
    <%= f.label :media_link %><br />
    <%= f.text_field :media_link %>
</p>

Здесь я хочу установить шаблон в «media_link» при выборе опции в выпадающем меню. Если я выберу Facebook в раскрывающемся списке, то media_link должен принимать только шаблон ссылки Facebook. например http://www.facebook.com/stevemaddon. Опцией в раскрывающемся списке могут быть блоги или твиттер.

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 апреля 2011

Я бы сделал что-то вроде:

validate :social_media_format

MEDIA_LINK_FORMATS = {
  :twitter => /^http:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)$/,
  :facebook => /.../
}

def social_media_format
  errors.add(:media_link, "does not match #{website_type}") unless media_link =~ MEDIA_LINK_FORMATS[website_type.to_sym]
end
0 голосов
/ 26 апреля 2011

Я буду с тобой настоящим, я не уверен, что ты пытаешься сделать это динамически или что-то еще, но возьми это и скажи мне, как это работает / не работает для тебя.

input = [:media_link]
if params[:website_type] == #Facebook website_type id
  if !input["facebook.com/"] #Or whatever regexp you want to use
    redirect_to :back, flash[:message] => "Must be a Facebook URL"
  end
end
if params[:website_type] == #Twitter website_type id
  if !input[/^http:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)$/] 
    redirect_to :back, flash[:message] => "Must be a Twitter URL"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...