在页面加载时将部分注入DOM



数据存储在我的"version"模型的"code"列中。在show页面上,我想在页面加载时将该数据注入#canvas的html中。当页面加载时,#canvas中没有内容。

/ui.html.erb

<%= form_for @version, remote: true do |f| %>       
  <%= f.text_field :name %>
  <%= f.text_field :description %>
  <%= f.hidden_field :code, id: "version-content" %>
  <%= f.submit "Save Version", id: "submit-version" %>
<% end %>

versions_controller.rb

def create
  @version = Version.new(creation_params)
  if @version.save
    flash[:success] = "Version saved."
    redirect_to @version
  else
    render :new
  end
  respond_to do |format|
    format.html
    format.js
  end
end

版本/create.js.erb

$('#canvas').html("<%= escape_javascript(render(partial: 'versions/code')).html_safe %>");

版本/_code.html.erb

<%= @version.code %>

版本/show.html.erb

<div id="canvas"></div>

你确定你在做你想做的吗?现在这段代码将呈现你的show.js.erb时,你访问像/:控制器/show.js,我相信它不是呈现html变体。所以你的js没有插入内容的地方。如果你想在partial中渲染partial,把这个添加到partial (guess/views/show.html.erb)

<%= render partial: 'shared/code' %>

如果你在两个视图中渲染部分,最好使用共享文件夹。确保有_code.html。

如何访问show操作?JS会被触发吗?

您的显示操作链接是否包含remote: true ?或者

如果没有远程链接,JS中的onload函数在哪里?

show.js.erb只被触发,如果请求是每个Javascript!

形式:

<%= form_for @something, remote: true do |f| %>
<% end %>

更新versions_controller.rb:

def create
  if @version.save
    respond_to do |format|
      format.html { redirect_to @version }
      format.js
    end
  else
  ... 
  end
end

最新更新