我有一个简单的has_many
关系,可以由rails fields_for
实现。我正在为Netzke
寻找相同的行为。
以下是课程:
class Question < ActiveRecord::Base
attr_accessible :description, :title
validates_presence_of :title, :description
has_many :question_options
accepts_nested_attributes_for :question_options
端
class QuestionOption < ActiveRecord::Base
attr_accessible :title, :question
validates_presence_of :title
belongs_to :question
端
以下是我正在构建的表单:
class QuestionForm < Netzke::Basepack::Form
js_configure do |c|
c.mixin
end
def configure(c)
super
record.build_for_editing if record.present?
c.model = 'Question'
c.title = 'Question'
c.items = [:title, :description]
end
end
到目前为止这种形式工作正常。我无法弄清楚实现has_many行为的方式,就像我们在rails fields_for
任何人都可以指导我如何在此方案中使用netzke
。
答案 0 :(得分:1)
您是否尝试实施主细节/一对多编辑?如果是这样,在Netzke演示应用程序中给出了一个很好的例子(参见http://netzke-demo.herokuapp.com/中的老板和文员)。
您需要创建三个组件:
首先,QuestionOption模型必须允许访问主表的ID(Netzke的东西,不管它不起作用)。
class QuestionOption < ActiveRecord::Base
attr_accessible :title, :question_id
validates_presence_of :title
belongs_to :question
end
这是组件代码:
class Questions < Netzke::Basepack::Grid
def configure(c)
super
c.model = 'Question'
c.items = [
:description,
:title
]
end
end
class QuestionOptions < Netzke::Basepack::Grid
def configure(c)
super
c.strong_default_attrs = {question_id: c.question_id}
c.scope = {question_id: c.question_id}
c.model = 'QuestionOption'
c.columns = [
{ name: :title, header: 'Option Title'}
]
end
end
class QuestionsAndOptions < Netzke::Base
def configure(c)
super
c.items = [:questions, :question_options]
end
js_configure do |c|
c.layout = :border
c.border = false
c.height = '100%'
c.init_component = <<-JS
function() {
this.callParent();
var questions = this.netzkeGetComponent('questions');
var question_options = this.netzkeGetComponent('question_options');
questions.on('itemclick', function(view, record) {
this.selectQuestion(record.get('id'));
question_options.getStore().load();
}, this);
}
JS
end
endpoint :select_question do |id, this|
component_session[:selected_question_id] = id
end
component :questions do |c|
c.region = :center
end
component :question_options do |c|
c.region = :south
c.question_id = component_session[:selected_question_id]
c.height = '50%'
end
end
如果您需要,请尝试告诉我。对不起,如果我误解了你的问题。
此致
的Drazen