我是新来的Ruby on Rails的,我使用Rails 4.1.9,2.0.0的Ruby在Windows XP上如何将变量传递给部分?
这是我的模型
class Migproject < ActiveRecord::Base
validates :name, presence: true
validates :clientname, presence: true
validates :startdate, presence: true
#validates :enddate, presence: true
validates :is_active, presence: true
validates :statusid, presence: true
has_many :projectmembers, dependent: :destroy
accepts_nested_attributes_for :projectmembers, :allow_destroy => true
end
class Projectmember < ActiveRecord::Base
validates :fk_userid, presence: true
validates :fk_roleid, presence: true
belongs_to :roles
belongs_to :users
belongs_to :migproject
end
这是我的看法
<%= mp.fields_for :projectmembers do |pm| %>
<%= render "projectmember_fields", :projectmembers => pm %>
<% end %>
这是我的部分
<tr class="fields">
<td>Select Users :</td><td><%= projectmembers.collection_select :fk_userid, User.all, :pk_userid, :fname, {:prompt => true} %></td>
<td> Select Role :</td><td><%= projectmembers.collection_select :fk_roleid, Role.all, :pk_roleid, :rolename, {:prompt => true} %></td>
<td><span class="removefld"><%= projectmembers.hidden_field :_destroy %><%= link_to "Remove" %></span></td>
</tr>
但是,当我运行得到这样的错误
undefined local variable or method `projectmembers' for #<#<Class:0x4e13680>:0x2ea41e0>
我在哪里犯错?
是否有任何其他方法添加动态字段到表单?
这是我的应用助手
module ApplicationHelper
def link_to_add_fields(name, mp, association)
new_object = mp.object.send(association).klass.new
id = new_object.object_id
fields = mp.fields_for(association, new_object, child_index: id) do |build|
render(association.to_s.singularize + "_fields", mp: build)
end
link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n","")})
end
end
我可以渲染HTML从同一页块,而不是调用助手部分的?
的另一种方式工作在HAML,虽然。 –
也许是由于渲染到'render_with_haml'的别名 – Benj
但它仍然不适用于我。 这是完整的错误消息,则表明 NameError在Migprojects#显示 显示C:/Sites/vinpa/app/views/migprojects/_projectmember_fields.html。erb哪里行#2上升: 未定义的局部变量或方法'projectmembers'为#<#:0x395bab8> –