我有一个主意和一个问题,似乎找不到答案或解决方案。
一些信息,如果以后需要或有帮助的话:
好的,所以我有设置页面,在这里我可以使用best_in_place gem通过编辑单个设置来更新它们。工作良好。对此感到满意。
有些设置是相互关联的,这意味着我必须对它们进行求和或减去。
作为对用户有用的提示,在我看来,在该设置的就位表单旁边也有一个计算值。
现在,当然,我希望看到该值与属性本身一起被更新。
我找不到办法。
如果我使用:data =>做到这一点,但我得到的是旧值而不是新值,因此我的观点总是“落后1步”。
我也尝试使用update.js.erb和_test.html.erb部分,但javascript文件不起作用。好像它不存在。我有两次,三次检查放在哪里,还可以(app/views/controller/_partial.html.erb)
所以。一个非常简单的问题是;我如何访问更新后的值并在 View 中使用它来更新计算。我个人认为我应该使用局部文件和js文件-但是我不知道为什么未拾取JS文件。有什么想法吗?
如果还有其他选择,我将不胜感激。
谢谢!
-编辑(已添加代码)
看法:
<td>
<%= best_in_place @s,:pay_after_bonus, :display_with => :number_to_percentage, :type => :input, :nil => "Klikni tu za spremembo!", :cancel_button=> "Prekliči" %>
Cena: <span id="test"><%= number_to_currency(@s.family_member_price - ((@s.pay_after_bonus * @s.family_member_price)/100)) %></span>
</td>
settings_controller.rb:
def update
@s = Setting.find(params[:id])
respond_to do |format|
@s.update_attributes params[:setting]
@s.create_activity :update, :params => { :setting => params[:setting].keys.first }, owner: current_user
format.json { respond_with_bip(@s) }
format.js
end
end
update.js.erb:
$( "#test" ).html( "<%= escape_javascript( render( :partial => "update") ) %>" );
_update.html.erb:
<strong>Test</strong>
-编辑2:
好的,显然可以像我这样想做一些事情:
$('.best_in_place[data-attribute="model_attribute"]').bind(
"ajax:success", function(event, data) {
// function that will update whatever
});
与...结合
// respond to json request with
render :json => {"model" => @model}
和
"ajax:success", function(event, data) {
var result = $.parseJSON(data);
// from here the result var will be accessible with all the data returned by the controller.
// result.model is your object - use result.model.attribute to get specific values...
}
但这对我来说结束了。
我不知道如何使用render:json => {“model” => @model},因为它必须与format.json {response_with_bip(@s)}结合使用。
我应该在 Controller 中的哪里放置渲染?
目前,我收到500个内部服务器错误,试图以此作为响应。
我已经找到了解决方案here。
谢谢!!
最佳答案
在ajax回调中,您可以发出另一个请求以获取所需的部分内容:
$('.best_in_place.myclass').bind("ajax:success", function () {
$.getScript("http://www.someurl.com");
});
然后在该操作中,渲染一个JS文件(例如show.js.erb),在其中将目标元素替换为渲染结果:
$("#div-<%= @div.id %>").replaceWith("<%= escape_javascript(render(partial: 'some/partial', :layout => false)) %>");
关于ruby-on-rails - best_in_place-在 View 中使用更新的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15295571/