2016-01-20 42 views
1

我知道in-place editing是一件事情。但是我如何去創造。Rails:就地編輯是一件事情,但就地創建是什麼?

我有items關聯到一個類別。如果我想要一個頁面顯示類別x中的所有項目,並讓用戶能夠使用類別更新中的項目列表從類別頁面向該類別添加新項目以顯示全部添加的新項目頁面進行全面更新我將如何去做這件事?

這種類型的東西有沒有寶石?

+1

我認爲用ajax添加數據會做你的工作。 – chaitanya

+1

是的,如果沒有寶石或其他已知方法,ajax會是我的選擇。 – Rob

+1

解決方案是AJAX調用。你必須使用JavaScript來完成這項工作。 –

回答

0

是的寶石被稱爲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視圖。它應該工作,雖然可能需要調整一點。

+1

看起來不錯我會給它一個鏡頭,看看它是否能完成這項工作 – Rob

+0

看起來不會有效。我需要2個不同的表格。 1.保存類別和另一個輕鬆添加新項目。這一切都在一個表單提交 – Rob