tma*_*ini 5 ruby-on-rails nested-forms nested-form-for simple-form ruby-on-rails-3.1
我有一个项目模型has_many :tasks.我在rails 3.1中添加了一个嵌套资源,现在尝试使用nested_form gem来编辑项目时添加/删除任务.
我之前在另一个Rails3应用程序中使用了nested_form,它工作正常,但现在我的fields_for部分没有呈现任何东西.
这是我的代码:
#project.rb
class Project < ActiveRecord::Base
attr_accessible :nr, :name, :client_id, :project_status_id, :hidden, :active, :description, :tasks_attributes
has_many :tasks, :dependent => :destroy
accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true
end
#task.rb
class Task < ActiveRecord::Base
belongs_to :project
end
#views/projects/_form.html.erb
<%= simple_nested_form_for @project do |form| %>
<%= form.input :nr, :label => 'Nr' %>
<%= form.input :name, :label => 'Name' %>
<%= form.association :client, :collection => Client.all(:order => 'name'), :prompt => "Choose a Client" %>
<%= form.input :description, :label => 'Description' %>
<%= form.input :active, :label => 'Active' %>
<%= form.input :hidden, :label => 'Hidden' %>
<div class="task_fields">
<%= form.fields_for :tasks do |task_form| %>
<%= task_form.input :name %>
<%= task_form.input :description %>
<%= task_form.input :deadline %>
<%= task_form.link_to_remove "Remove this task" %>
<p><%= form.link_to_add "Add a task", :tasks %></p>
<% end %>
</div>
<div class="actions">
<%= form.button :submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在我的路线:
resources :posts do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中访问该页面时
<div class="task_fields"></div>
Run Code Online (Sandbox Code Playgroud)
被渲染为空.没有fields_for和anysoever.加载了nested_form.js,我指向我的GEMFILE gem "nested_form", :git => 'https://github.com/fxposter/nested_form.git',因为我读到某个地方我需要这样做以获得simple_form支持.我还尝试将simple_nested_form_for更改为仅nested_form_for,但没有效果.
任何帮助高度赞赏
Dam*_*ien 15
在projects#new,您必须初始化至少一个任务,否则您的fields_for部分将不会显示任何内容.
# projects_controller.rb
def new
@project = Project.new
@project.tasks.new
end
Run Code Online (Sandbox Code Playgroud)
如果您想要多个任务:
n.times { @project.tasks.new } # replace n with the number of tasks needed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3231 次 |
| 最近记录: |