“spiołem” mimo to mam nowy błąd
undefined method `key?' for nil:NilClass
model:
[code]class Valid
include ActiveModel::EachValidate
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name, :email, :content
validates_presence_of :name
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
validates_length_of :content, :maximum => 500
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
true
end
end[/code]
kontroler:
[code]class ValidController < ApplicationController
def new
@valid = ‘’
end
def create
@valid = Valid.new(params[:valid])
if @valid.valid?
# TODO send message here
flash[:notice] = “Message sent! Thank you for contacting us.”
redirect_to root_url
else
render :action => ‘new’
end
end
end[/code]
widok:
[code]<%= form_for @valid, :url => send_form_path do |f| %>
<%= f.error_messages %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :content, "Message" %>
<%= f.text_area :content %>
<%= f.submit "Send Message" %>
<% end %>[/code]
Routes
[code]Hello::Application.routes.draw do
match “/valid/index”, :to => “valid#new”, :valids_path => :new
match “send_form”, :to => “valid#create”, :patch => :create
root :to => ‘home#index’
end[/code]
PS http://railscasts.com/episodes/219-active-model?view=asciicast to nie działa bo jest na starej wersji rails pisane…
ma ktoś jakiś pomysł,