Je suis en train de mettre en place une simple page Web RoR qui collecte les emails des visiteurs et les stocke comme des objets. Je l'utilise comme un mini-projet pour essayer RoR et BDD. Je pense à 3 caractéristiques pour le concombre: 1. L'utilisateur soumet une adresse e-mail valide 2. L'utilisateur soumet une adresse e-mail existante 3. L'utilisateur soumet un mail invalideEmail Collector/Implementation
Ma question est, pour les scénarios 2 et 3, est il vaut mieux gérer cela via le contrôleur? ou en tant que méthodes dans une classe? Peut-être quelque chose qui lance des erreurs si une instance est instanciée dans sceanrio 2 ou 3?
La mise en œuvre est ci-dessous, j'adore entendre des critiques de code en plus des réponses aux questions ci-dessus. Merci!
Modèle:
class Contact < ActiveRecord::Base
attr_accessor :email
end
VIEW:
<h1>Welcome To My Experiment</h1>
<p>Find me in app/views/welcome/index.html.erb</p>
<%= flash[:notice] %>
<% form_for @contact, :url => {:action => "index"} do |f| %>
<%= f.label :email %><br />
<%= f.text_field :email %>
<%= submit_tag 'Submit' %>
<% end %>
CONTRÔLEUR:
class WelcomeController < ApplicationController
def index
@contact = Contact.new
unless params[:contact].nil?
@contact = Contact.create!(params[:contact])
flash[:notice] = "Thank you for your interest, please check your mailbox for confirmation"
end
end
end
Ah merci! Ça a du sens. Lorsque j'ajoute cependant le code, j'obtiens l'erreur suivante: méthode non définie 'text? ' for nil: NilClass Trace vers: /welcome_controller.rb:5:in 'index ' Des indices sur la nature de cette erreur? – Tian
Pas certain. À quoi correspond la ligne 5 de votre welcome_controller? –
@contact = Contact.create! (Params [: contact]) – Tian