使用Ajax在Rails中无需重新加载页面更新Div

3

在我的视图af_form.html.erb

我有一个按钮可以触发Ajax调用

  <%= button_to('update ', {:action => 'update', :thingyid => 314}, :method => :get, :remote => true , :'data-update-target' => 'af_stat' ) %>

    <div id="af_stat" >
    <h3>Tiltle : 
      <%= @kk %>
    </h3>   

有人说我应该有一个名为_af_form.html.erb的文件,那么_af_form.html.erb应该是什么?

在我的控制器welcome中,有一个方法。

  def update

    @kk = @kk +1

    render :partial => 'af_form', :content_type => 'text/html'
  end   

我听到有人说过:“就像 af_form.js.erb 一样”。这不是很愚蠢吗?复制两个完全相同的文件,违反了 DRY 原则。
此外它还不能工作。出了什么问题呢? 有没有人可以帮帮我?非常感谢。
我只想改变 af_form.html.erb 的视图而不是 _af_form.html.erb,为什么我还需要 _af_form.html.erb?

2
在控制器中删除渲染行并创建一个update.js.erb模板。在该文件中,添加您想要执行的JavaScript。 - jvnill
你好,你确定在 update.js 文件中吗?我在服务器控制台看到了 Rendered welcome/af.js.erb (0.6ms) 的信息。然而,无论我在 js 文件中怎么写 page.replace_html('af_form', render(@kk)),它都不起作用。 - newBike
那个渲染是由于你的代码引起的。如果你正在使用Rails 3,可以自己输入JS。你不再有访问页面变量的权限了。 - jvnill
有例子吗?似乎页面一旦渲染,变量就不能再更改了?我该怎么在JS中处理?JS能接受新的变量吗? - newBike
жҲ‘дҪҝз”ЁFirebugжҚ•иҺ·е“Қеә”alert(@kk) page.replace_html('af_form', render(@kk))пјҢе“Қеә”жІЎжңүе°Ҷ@kkжӣҝжҚўдёәвҖңжҲ‘жғіиҰҒзҡ„ж•°еӯ—вҖқгҖӮ - newBike
1个回答

1

在你的update.js.erb文件中尝试这个

$('#af_stat h3').text('Title: <%= escape_javascript @kk %>');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接