2015年3月29日 星期日

rails_0325

有許多活動,可以邀請許多人參加,但每個活動每人只能申請一次(綁定email)。姓名、Email、活動,都不能空白,還有格式的一些限定。



$ rails new rubyevent
$ cd rubyevent/

$ rails g scaffold invite name email event_id:integer
$ rake db:migrate

$ rails g model Event

/db/migrate/create_events.rb
t.string  :title

$ rake db:migrate

$ rails c  #新增資料
Event.create(:title => "Ruby")
Event.create(:title => "PHP")
Event.create(:title => "Java")
Event.create(:title => "Html")
Event.create(:title => "CSS")


/app/models/invite.rb
belongs_to :event
validates :name, presence:{ message: '請填寫您的名字/暱稱' }
validates :email, presence:{ message: '請填寫Email' }, format:{ with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, message: 'Email 格式有誤' }, uniqueness:{ scope: [:event_id], message: '這個 Email 已經填寫過了' }
validates :event, presence: { message: '請選擇活動' }

belongs_to :event屬於event
# 名字不可空白
# Email不可空白、有格式限定、是唯一的不可重複
# 活動選單不可以沒有選擇


/app/models/event.rb
has_many :invites

has_many :invites有很多invites


/app/views/_form.html.erb
<div>
  <%= f.label :event_id, "活動" %>
  <%= f.collection_select(:event_id, Event.all, :id, :title) %>
</div>

# 輸入方式為下拉式選單


/app/views/index.html.erb
<%= invite.event.try(:title) %>

/app/views/show.html.erb
<%= @invite.event.try(:title) %>

# 顯示出event名稱,而不是id。用try,他才會去試,是否真的有值,沒有值就會顯示空的。

沒有留言:

張貼留言