数据存储在我的"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