如何更改选择下拉框中的文本字段?

时间:2011-04-26 14:33:11

标签: ruby-on-rails

<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 :(得分:0)

我会真实地和你在一起,我不确定你是想动态地做这件事还是做什么,但是接受这个并告诉我这对你有什么影响。

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

答案 1 :(得分:0)

我会做类似的事情:

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