start do
end
start do |i|
end
(1..10).each do |n|
puts n
end
resources :events do
resource :location
end
Rails::Application.configure do |config|
config.time_zone = 'Asia/Taipei'
end
<% @attendees.each do |attendee| %>
<%= attendee.name %>
<% end %>
variable
method
@instance_variable
@i # => nil
@i = 10
@i # => 10
variable # => undefined local variable or method `variable'`
method # => undefined local variable or method `method`
@event.name # => "Undefined method `name` for nil:NilClass"
# Routes => Controller => View
# Columns
# has_many, belongs_to
class Foo
attr_accessor :bar
def initialize
end
def set_bar
@bar = "foobar"
end
end
foo = Foo.new
foo.bar # => nil
foo.set_bar
foo.bar # => "foobar"
# =======
def setup_event(event)
event.build_location unless event.location
event
end
def render_hash(hash)
puts hash[:foo]
puts hash[:bar]
end
render_hash({:foo => "foobar", :bar => "foobar"})
render_hash(:foo => "foobar", :bar => "foobar")
render_hash(foo: "foobar", bar: "foobar")
render_hash foo: "foobar", bar: "foobar"
routes.rb
resources :events do
member do
post :join
post :withdraw
end
end
app/views/events/show.html.erb
<%= button_to "Join", join_event_path(@event) %>
<%= button_to "Withdraw", withdraw_event_path(@event) %>
- CLI
rails g model user username:string
rails g model membership event_id:integer user_id:integer
rake db:migrate
rails c
User.create(:username => "John")
user.rb
has_many :events, through: :memberships
has_many :memberships
membership.rb
belongs_to :event
belongs_to :user
event.rb
has_many :users, through: :memberships
has_many :memberships
events_controller.rb
def current_user
User.first
end
events_controller.rb
def join
@event = Event.find(params[:id])
Membership.find_or_create_by(:event => @event, :user => current_user)
redirect_to :back
end
def withdraw
@event = Event.find(params[:id])
@membership = Membership.find_by(:event => @event, :user => current_user)
@membership.destroy if @membership
redirect_to :back
end
app/views/events/show.html.erb
<% @event.users.each do |user| %>
<p><%= user.username %></p>
<% end %>