我知道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來完成這項工作。 –