jQuery .load() - 函数没有重载元素(Rails)

时间:2015-01-21 16:51:23

标签: javascript jquery ruby-on-rails

在我的Rails项目中,我试图在控制器响应(create.js.erb)中通过JS更改实例变量,然后重新加载使用实例变量的HTML元素。但它不起作用。可能吗?这只是一个例子。

我还想显示新创建的对象。但由于我似乎不理解在rails和JS之间交换信息的机制,我想在这里保持简单。

vocabs-controller.rb

def new
  @user = current_user
  @vocab = @user.vocabs.build
  @vocabs = @user.vocabs.all
  @count = @vocabs.count
  .
  .
end 

def create
  @user = current_user
  @vocab = @user.vocabs.build(vocab_params)
  @count = @user.vocabs.count
  .
  .
  respond_to do |format|
    format.html do
      redirect_to new_user_vocab_path(@user)
      flash[:success] = "Vocab created!"
    end
    format.js {render :layout=>false}
  end
    else
  respond_to do |format|
    format.html {render 'vocabs/new'}
    format.js  
  end
end 

new.html.erb(从这里我调用控制器创建动作)

<div class="panel-body">
    <%= form_for(@vocab, 
         url: user_vocabs_path(@user),
         method: :post, remote: true) do |f| %>
      .
      .
      .
      <%= f.submit "Add", class: "btn btn-large btn-primary" %>
    <% end %>  

    <h4> 
      <%= @count %> Vocabs in your collection
    </h4>
    <%= link_to "(Show)", "#", id: "show_link" %>
    <%= link_to "(Hide)", "#", id: "hide_link" %>

    <ul class='vocabs <%= @vocabs_class %>'>
      <% @vocabs.each do |vocab| %>
        <%= render vocab %> 
      <% end %>
    </ul>
    <hr> 
    <%= link_to "Back", home_user_path(@user) %> 
</div>
.
.

create.js.erb

<% @count+=1 %>
$('h4').load();

服务器识别出我发出了JS请求,并且还使用200 OK呈现create.js.erb。但是.load()函数似乎没有用新数据重新加载h4-Element。

当我尝试.load()包含公式字段的div元素时,这些也没有更新。文本输入仍然可见。

进一步的问题:我在哪里可以调试JS Controller响应中的代码?我无法在Chrome的开发工具和Rails的服务器输出中找到它们。

1 个答案:

答案 0 :(得分:0)

如果我正确关注您,请尝试

将{id}属性添加到h4

<h4 id="count-header">...</h4>

.erb.js回调中:

$('#count-header').text('<%= @count += 1 %> Vocabs in your collection');