2013-05-07 71 views
0

我有一個典型的「創建」窗體操作,它被設置爲遠程調用。Rails遠程窗體,創建後替換

我想要做的是在提交表單後,將表單替換爲帶有額外表單字段的「編輯」視圖,這樣一旦他們提交了第二個表單,它就會更新而不是創建新記錄。

所以基本上,表格會從「創建」更改爲「編輯」...但都通過ajax調用。

我正在運行Rails 3.2。

+0

你可以讓你的行動來響應JS和添加create.js.erb,並添加有像'$(「#new_product_form」)。HTML( '<%= escape_javascript(render(「edit_product_form」))%>');'。 – 2013-05-08 00:00:20

回答

3

,如果你想只是行爲,你可以在你的控制器刪除任何東西你讓一個AJAX POST到/resources

控制器

def create 
    ... 
    # you set @resource to be used in edit form 
    @resource = Resource.create params[:resource] 

    respond_to do |format| 
    # tell controller to respond to requests with JS format 
    format.js 
    end 
    ... 
end 

其實。

def create 
    ... 
    # you set @resource to be used in edit form 
    @resource = Resource.create params[:resource] 
    ... 
end 

請務必與JS格式POST:

<%= form_for @resource, format: :js %> 

查看

文件create.js.erb由控制器提供服務,並通過瀏覽器運行。

$(selector).html("<%= escape_javascript(render 'edit') %>") 

您必須根據您在頁面中使用新表格的內容來定義selector

文件_edit.html.erb在以前的文件中內聯呈現

<%= form_for @resource, remote: true do %> 
    ...