2011-04-26 4 views
0
<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> 

Ici, je veux définir le motif dans "media_link" en sélectionnant l'option dans la liste déroulante. Si je choisis facebook dans le menu déroulant alors media_link devrait accepter seulement le modèle de lien facebook. par exemple http://www.facebook.com/stevemaddon. Option dans le menu déroulant peut être des blogs ou twitter.Comment changer le champ de texte dans la liste déroulante?

Merci,

+0

Vous essayez de définir le texte dans le champ de texte, ou vous essayez de valider le texte dans le champ de texte? Le premier serait fait en Javascript. Ce dernier serait mieux fait avec une validation personnalisée dans le modèle. La logique du contrôleur suffirait si vous n'avez pas de modèle. –

+0

J'essaie de valider le texte. J'ai un modèle, donc dans ce je suppose que je dois écrire une méthode ?? – user659068

Répondre

0

Je vais être vrai avec vous, je ne suis pas sûr si vous essayez de le faire de façon dynamique ou quoi, mais de prendre ce et me dire comment cela ne/ne fonctionne pas pour toi.

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 
+0

Je vais ajouter toutes ces informations d'identification sur une nouvelle page. donc cas si l'utilisateur sélectionne twitter à partir de la liste déroulante puis le champ de texte media_link ne devrait prendre ce modèle "/^http: \/\/twitter \ .com \/(?: #! \ /)? (\ w +) \/statut (es)? \/(\ d +) $/"ou autre facebook similaire – user659068

+0

Est-ce que cela devrait être une validation dynamique? Comme avec JavaScript où il permet seulement de taper dans ce modèle? Vous continuez à utiliser le mot "accepte" ce qui me fait penser –

+0

** validates_format_of: social_media_handle,: avec => /^http:\/\/twitter\.com\/(?:#!\/)?(\w+) \/status (es)? \/(\ d +) $ /,: sauf =>: social_media ** def social_media self.social_media_handle.match (/ twitter /) fin. Pour la question ci-dessus, je l'utilise, en ce moment seulement pour Twitter comment je ferais pour d'autres options comme Facebook et les blogs? – user659068

0

je ferais quelque chose comme:

Questions connexes