【发布时间】:2015-04-16 23:08:11
【问题描述】:
您好,我正在尝试根据可事件类型创建一个事件。 eventable 类型是 group 或 shop。
编写我的代码,我目前确信他们是创建我的路由和控制器的更好方法(仍然是 Rails 新手)
有没有办法在可事件类型中只创建一个新的和创建方法传递?
型号:
class Event < ActiveRecord::Base
belongs_to :eventable, polymorphic: true
class Group < ActiveRecord::Base
has_many :events, as: :eventable
class Shop < ActiveRecord::Base
has_many :events, as: :eventable
路线:
resources :events do
collection do
get :new_national_event
get :new_local_event
post :create_national_event
post :create_local_event
end
do
事件控制器:
def index
@search = Search.new(params[:search])
@shop = find_user_shop(@search.shop_id)
@group = @shop.group
@shop_events = @shop.events
@group_events = @group.events
end
def new_national_event
@user = current_user
@event = @user.group.events.new
end
def new_local_event
@shop = find_user_shop(@search.shop_id)
@event = @shop.events.new
end
def create_national_event
user = current_user
@event = user.group.events
if @event.save!
flash.now[:notice] = "Votre événement national a bien été enregistré"
render :index
else
flash.now[:error] = "Erreur lors de l'enregistrement du événement national"
render :new
end
end
def create_local_event
user = current_user
@event = user.group.shop.events
if @event.save!
flash.now[:notice] = "Votre événement local a bien été enregistré"
render :index
else
flash.now[:error] = "Erreur lors de l'enregistrement du événement local"
render :new
end
end
观看次数:
index.html.slim
= link_to new_national_event_events_path
= link_to new_local_event_events_path
new_national_event_events_path.html.slim
= form_for @event, :url => create_national_event_events_path, :method => :post do |f|
div class="field"
= f.text_field :title, :required => true
div class="field"
= f.text_field :threshold, :required => true
div class="form-actions"
=f.submit "Create", class: "btn blue"
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3