<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。下拉选项可以是博客或推特。
谢谢,
答案 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