首先,感谢您花时间阅读并回答我的问题。对此,我真的非常感激。
我不是在寻找关于如何实现以下目标的确切代码,而是更多我应该遵循的方向或路径。
登录的用户可以创建不同的课程。我已经为每门课程添加了一个要求(提供者),并且我希望用户在这样做之前至少有一个提供者关联(为此使用 rolify),但我希望这在同一个视图中(课程#新的)
我尝试了以下方法:
- 嵌套表单(不起作用,因为我在创建课程时至少需要一个提供者)
- 在页面的模式中添加 providers#new(不能使用 form_form(@provier) 从另一个控制器调用控制器
我想到了以下几点:
- 将用户重定向到提供者#new,如果他们没有先创建一个
- 添加一个带有 form_tag 元素的模式,该元素创建一个提供程序,然后刷新基础页面。
你怎么认为?更好的想法?
谢谢!弗朗西斯
我的课程#new (_form) 视图
<%= simple_form_for(@course) do |f| %>
<%= f.error_notification %>
<%= f.input :name %>
<%= f.input :description, as: :text, input_html: { rows: '2' } %>
<%= f.association :provider, :value_method => :id, collection: Provider.with_role(:provider_admin, current_user), input_html: { class: 'input-large' }, include_blank: false %>
<div class="form-actions">
<%= f.button :submit, :class => 'btn-primary' %>
<%= link_to "Cancel", :back, class: 'btn' %>
</div>
<% end %>
模型/提供者.rb
class Provider < ActiveRecord::Base
attr_accessible :description, :name
validates :name, :presence => true
validates :description, :presence => true
validates :name, :length => { :minimum => 6, :maximum => 100 }
validates :description, :length => { :minimum => 6, :maximum => 100 }
has_many :courses
end
模型/课程.rb
class Course < ActiveRecord::Base
attr_accessible :description, :name, :provider_id
validates :name, :presence => true
validates :name, :length => { :minimum => 6, :maximum => 100 }
validates :description, :presence => true
validates :description, :length => { :minimum => 6, :maximum => 256 }
validates :provider_id, :presence => true
belongs_to :provider
has_many :sessions, :dependent => :destroy
end