我知道in-place editing是一件事情。但是我如何去创造。Rails:就地编辑是一件事情,但就地创建是什么?
我有items
关联到一个类别。如果我想要一个页面显示类别x中的所有项目,并让用户能够使用类别更新中的项目列表从类别页面向该类别添加新项目以显示全部添加的新项目页面进行全面更新我将如何去做这件事?
这种类型的东西有没有宝石?
我知道in-place editing是一件事情。但是我如何去创造。Rails:就地编辑是一件事情,但就地创建是什么?
我有items
关联到一个类别。如果我想要一个页面显示类别x中的所有项目,并让用户能够使用类别更新中的项目列表从类别页面向该类别添加新项目以显示全部添加的新项目页面进行全面更新我将如何去做这件事?
这种类型的东西有没有宝石?
是的宝石被称为Cocoon
(如果你有nested fields)。
-
它的工作(手动)像这样:
#config/routes.rb
resources :posts do
resources :categories, only: [:new, :destroy] #-> url.com/posts/:post_id/categories
end
#app/controllers/posts_controller.rb
class PostsController < ApplicationController
def show
@post = Post.find params[:id]
end
end
#app/controllers/categories_controller.rb
class CategoriesController < ApplicationController
respond_to :js, :html, only: :new
def new
@post = Post.find params[:post_id]
@post.categories.build
end
def destroy
@post = Post.find params[:post_id]
@category = Category.find params[:id]
@post.categories.delete @category
end
end
#app/views/categories/new.js.erb
$category = $("<%=j render "form", locals: { post: @post } %>");
$($category.html()).appendTo(".categories");
#app/views/categories/_form.html.erb
<%= form_for post do |f| %>
<%= f.fields_for :categories, child_index: Time.now.to_i do |category| %>
<%= category.text_field :x %>
<% end %>
<% end %>
#app/views/categories/new.html.erb
<%= form_for @post, remote: true do |f| %>
<div class="categories">
<%= f.fields_for :categories do |category| %>
<%= category.text_field :x %>
<% end %>
</div>
<%= link_to post_new_categories_path(@post), remote: true %>
<%= f.submit %>
<% end %>
这将新的项目添加到通过AJAX你posts#show
视图。它应该工作,虽然可能需要调整一点。
我认为用ajax添加数据会做你的工作。 – chaitanya
是的,如果没有宝石或其他已知方法,ajax会是我的选择。 – Rob
解决方案是AJAX调用。你必须使用JavaScript来完成这项工作。 –