Ruby on rails Rails-如何在部分数据库中访问索引值
我试图在用户填写表单后使用内置的rails ajax将一个项目附加到列表中-但是,我无法将新条目附加到div标记:ActionView::Template::Error undefined局部变量或方法“index” 客户/索引:Ruby on rails Rails-如何在部分数据库中访问索引值,ruby-on-rails,ajax,ruby-on-rails-5,partial-views,renderpartial,Ruby On Rails,Ajax,Ruby On Rails 5,Partial Views,Renderpartial,我试图在用户填写表单后使用内置的rails ajax将一个项目附加到列表中-但是,我无法将新条目附加到div标记:ActionView::Template::Error undefined局部变量或方法“index” 客户/索引: <% @clients.each_with_index do |client, index| %> <div id="communication_pane<%= index %>"> <%= render cli
<% @clients.each_with_index do |client, index| %>
<div id="communication_pane<%= index %>">
<%= render client.communications.order(created_at: :desc) %>
</div>
<%= form_for([@clientlist, client, client.communications.build], remote: true) do |f| %>
<%= f.text_area :content, class: "form-control", id: "communication_content#{index}" %>
<%= f.submit("New Communication") %>
<% end %>
通信/create.js.erb:
$('#communication_pane<%= index %>').prepend('<%= escape_javascript(render @communications) %>');
如何从客户机/索引中访问索引值?我认为您必须将索引变量作为隐藏字段传递给控制器操作,然后将其显示在create.js.erb上 客户/索引: 通信/create.js.erb 在create.js.erb中,$'communication_pane'处有一个未定义的变量索引 因为服务器无法知道您在客户端上单击的位置,所以您必须明确地告诉服务器。这里有一个想法:
<!-- app/views/clients/index.html.erb -->
<% @clients.each_with_index do |client, index| %>
<div id="communication_pane<%= index %>">
<%= render client.communications.order(created_at: :desc) %>
</div>
<%= form_for([@clientlist, client, client.communications.build], remote: true) do |f| %>
<%= f.text_area :content, class: "form-control", id: "communication_content#{index}" %>
<!-- Letting server know the index of current form by adding a param -->
<%= hidden_field_tag :client_index, index %>
<%= f.submit("New Communication") %>
<% end %>
<% end %>
希望这有帮助
def create
@index = params[:communication][:index]
...
end
$('#communication_pane<%= @index %>').prepend('<%= escape_javascript(render @communications) %>');
<!-- app/views/clients/index.html.erb -->
<% @clients.each_with_index do |client, index| %>
<div id="communication_pane<%= index %>">
<%= render client.communications.order(created_at: :desc) %>
</div>
<%= form_for([@clientlist, client, client.communications.build], remote: true) do |f| %>
<%= f.text_area :content, class: "form-control", id: "communication_content#{index}" %>
<!-- Letting server know the index of current form by adding a param -->
<%= hidden_field_tag :client_index, index %>
<%= f.submit("New Communication") %>
<% end %>
<% end %>
# app/views/communications/create.js.erb
$('#communication_pane<%= params[:client_index] %>')
.prepend('<%= escape_javascript(render @communications) %>');