在Rails中更新Div,而不更改更新请求后的视图

Updating Div in Rails without changing view after an update request

本文关键字:更新 请求 视图 Rails Div      更新时间:2023-09-26

我是rails的新手。我正在使用form_for更新"collab"数据库条目。我修改了更新函数,创建了一个名为"@interpreted_code"的新实例变量,并将其分配给了一个字符串。当这个变量在我的更新函数中创建/更改时,我希望视图在不重新加载的情况下显示它。这是我的观点,collab.html.erb

<%= form_for @collab, :remote=>true do |f| %>
  <p>
    Enter Ruby Code<br>
    <%= f.text_area :text %>
  </p>
  <p>
    <%= f.submit %>
  </p>
<% end %>
<div id='interpreted' > 
  <%= @interpreted_code.inspect %> #this doesn't work
</div>

这是我的控制器rb 中的更新功能

def update
    @collab = Collab.find(params[:id])
    if @collab.update(collab_params)
      File.open('rubyfile.rb', 'w') { |file| file.write(@collab.text) }
      @interpreted_code = "BLAH BLAH (change later)"
    end
    render :nothing =>true
  end

试试这个-

首先创建一个像这样的部分_interpreted_code.html.erb

<%= @interpreted_code.inspect %>

现在这样改变你的看法-

<%= form_for @collab, :remote=>true do |f| %>
  <p>
   Enter Ruby Code<br>
   <%= f.text_area :text %>
  </p>
  <p>
    <%= f.submit %>
  </p>
<% end %>
<div id='interpreted' > 
  <%= render partial: "interpreted_code" %> 
</div>

创建文件update.js.erb

$("#interpreted").html("<%= raw escape_javascript(render(:partial => 'interpreted_code')) %>")

像这样改变你的控制器-

def update
 @collab = Collab.find(params[:id])
 if @collab.update(collab_params)
   File.open('rubyfile.rb', 'w') { |file| file.write(@collab.text) }
   @interpreted_code = "BLAH BLAH (change later)"
 end
 respond_to do |format|
   format.js
 end
end