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_tagsrc 没有改变。我必须使用 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.erberb 模板,其中包含如下内容:

$("#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