我的数据存储在“版本”模型的“代码”列中。在显示页面上,我想在页面加载时将该数据注入到#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>
答案 0 :(得分:0)
你确定你做了你想做的事吗?
现在,这个代码会在您访问时显示您的show.js.erb
,例如/:controller/show.js,我相信它不会渲染html变体。所以你的js没有插入内容的地方。
如果你想在部分内部渲染部分,请将其添加到部分(猜/views/show.html.erb)
<%= render partial: 'shared/code' %>
如果在成对视图中呈现部分,则使用共享文件夹是最佳做法。确保在views目录的share文件夹中有_code.html.erb。
答案 1 :(得分:0)
您如何访问show动作? JS会被触发吗?
您对show动作的链接是否包含remote: true
?
或
如果没有远程链接,JS中的onload函数在哪里?
如果请求是按Javascript进行的话, show.js.erb
只会被触发!
表格:
<%= 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