【问题标题】:Updating Div in Rails without changing view after an update request在更新请求后更新 Rails 中的 Div 而不更改视图
【发布时间】:2016-09-13 23:38:36
【问题描述】:

我是 Rails 新手。我正在使用 form_for 来更新“协作”数据库条目。我修改了我的更新函数以创建一个名为“@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>

这是我的 controller.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

【问题讨论】:

    标签: javascript html ruby-on-rails ajax


    【解决方案1】:

    试试这个-

    首先创建一个像这样的部分 _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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多