Image_tag src 在 rails 中没有随控制器动态变化
Image_tag src did not changed dynamically with controller in rails
我想通过 link_to
动态更改 image_tag
src。
所以我link_to
。此 link 包含参数。在控制器中,我的实例变量@selected_creator
成功获取了这个参数。我确认我的实例变量也在视图文件中发生了变化。但是我的 image_tag
src 没有改变。我必须使用 jquery 吗?如果那我该如何渲染它?
creators/_row.html.erb
<% @creators.each do |creator| %>
<%= link_to 'select', creators_path(id: creator.id), :remote => true %>
<% end %>
creators_controller.rb
def index
@creators = Creator.all
if params[:id]
@selected_creator = Creator.find_by_id(params[:id])
else
@selected_creator = nil
end
end
creators/index.html.erb
<%= image_tag "#{@selected_creator.asset.url(:medium)}", :id => 'selected-creator' %>
您正在使用 :remote => true
,这意味着当您单击 link 时,您正在执行 ajax 请求。所以你应该创建一个名为 index.js.erb
的 erb
模板,其中包含如下内容:
$("#selected-creator").attr("src", <%= @selected_creator.asset.url(:medium) %>);
您还需要将 respond_to :js
添加到您的控制器,使其看起来像这样:
class SomeController < ApplicationController
respond_to :js
def index
#rest of code
end
end
我想通过 link_to
动态更改 image_tag
src。
所以我link_to
。此 link 包含参数。在控制器中,我的实例变量@selected_creator
成功获取了这个参数。我确认我的实例变量也在视图文件中发生了变化。但是我的 image_tag
src 没有改变。我必须使用 jquery 吗?如果那我该如何渲染它?
creators/_row.html.erb
<% @creators.each do |creator| %>
<%= link_to 'select', creators_path(id: creator.id), :remote => true %>
<% end %>
creators_controller.rb
def index
@creators = Creator.all
if params[:id]
@selected_creator = Creator.find_by_id(params[:id])
else
@selected_creator = nil
end
end
creators/index.html.erb
<%= image_tag "#{@selected_creator.asset.url(:medium)}", :id => 'selected-creator' %>
您正在使用 :remote => true
,这意味着当您单击 link 时,您正在执行 ajax 请求。所以你应该创建一个名为 index.js.erb
的 erb
模板,其中包含如下内容:
$("#selected-creator").attr("src", <%= @selected_creator.asset.url(:medium) %>);
您还需要将 respond_to :js
添加到您的控制器,使其看起来像这样:
class SomeController < ApplicationController
respond_to :js
def index
#rest of code
end
end