2013-03-30 24 views
1

首先,感谢您花时间阅读并回复我的问题。对此,我真的非常感激。在同一视图中处理模型需求?

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

已登录的用户可以创建不同的课程。我已经为每门课程添加了一个需求(提供者),并且我希望用户至少有一个提供者关联(在此使用rolify),但是我希望这个提供者具有相同的视图(课程#NEW)

我已经试过如下:

  • 嵌套形式(不工作,因为我需要在课程创建至少一个提供商)
  • 添加提供商#新在模式上该页面(不能使用form_form从另一个控件调用控制器(@provier)

我想到了以下几点:

  • 重定向用户提供#新的,如果他们没有创造一个第一
  • 添加一个模式,以及创建一个提供商的form_tag元素,然后刷新页面底层。

您的想法是什么?更好的想法?

谢谢! 弗朗西斯

我的课程#新(_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 %> 

型号/ provider.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 

型号/ course.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 

回答

1

我喜欢这个想法,其中您在courses#newproviders#new做重定向时!current_user.provider.any?

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

+0

重新定向在用户体验方面有点废话,对于用户来说这会让人感到困惑。这就是为什么我更愿意在同一页面上做到这一点。出于某种原因,嵌套窗体将无法正常工作,而且我猜测,课程需要设置提供程序的事实是罪魁祸首。我猜我需要在*课程保存到数据库之前创建提供者? –

+0

使用您当前的模型嵌套窗体不起作用。你必须改变你的attr_accessibles。看看屏幕录像。 – wintermeyer

相关问题