我正在使用cocoon来嵌套表单。因此,当我添加实验时,我可以通过相同的表单添加变体。我安装了gem 'best_in_place', '~> 3.1
'以便于编辑,我在更新后遇到了问题。
通过best_in_place帮助器,我可以单击描述并进行更改。数据库已更新,更改显示片刻,然后消失,返回到我更改之前的状态。如果我刷新页面,我的更改是可见的。因此需要刷新页面才能显示更改。
我无法使best_in_place正常工作,在阅读之后,我最终坚持在我的嵌套路线之外的路线以使其工作
的routes.rb
resources :advertisers do
resources :experiments do
resources :variations
end
end
resources :variations, only: [:update, :show]
我在实验show.html.erb 文件中使用best_in_place
<% @experiment.variations.each do |variation| %>
<h3><i class="fa fa-square"></i> <%= variation.name %></h3>
<p class="data-row">
<span class="data-name">URL</span>
<span class="data-value"><%= variation.url %></span>
</p>
<p class="data-row">
<span class="data-name">Description</span>
<div><%= best_in_place variation, :description, :as => :textarea %></div>
</p>
<% end %>
我认为问题出在我的版本更新操作中。这是我的变体控制器
class VariationsController < ApplicationController
before_action :find_variation
def update
@variation.update(variation_params)
end
private
def variation_params
params.require(:variation).permit(:description, :name, :url)
end
def find_variation
@variation = Variation.find(params[:id])
end
end
任何帮助将不胜感激!
答案 0 :(得分:0)
我不确定如何修复它,但它的工作原理。这就是我所做的。
我将更新操作更改为
respond_to :html, :json
def update
@variation = Variation.find(params[:id])
@variation.update_attributes(variation_params)
respond_with(@variations)
end
一切正常。
更新:best_in_place使用下面的json,但控制器没有正确响应json。因此,通过添加respond_to和respond_with,它可以正常工作。