1

首先,感谢您花时间阅读并回答我的问题。对此,我真的非常感激。

我不是在寻找关于如何实现以下目标的确切代码,而是更多我应该遵循的方向或路径。

登录的用户可以创建不同的课程。我已经为每门课程添加了一个要求(提供者),并且我希望用户在这样做之前至少有一个提供者关联(为此使用 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
4

1 回答 1

1

我喜欢你重定向courses#newproviders#newwhen的想法!current_user.provider.any?

但我可能会采用嵌套形式。如果用户没有提供者,您可以使用一个表单来创建新课程和新提供者。看看http://railscasts.com/episodes/196-nested-model-form-revised以获得一个快速的想法。我认为这将是最好的 UI 明智。

于 2013-03-30T18:46:06.780 回答