如何执行rails 7'create.turbo_stream.erb'文件中的js代码

问题描述 投票:0回答:1

这是我的评论控制器代码

    def create
     @comment = current_user.comments.new(comment_params)
     @feed = Feed.find(params[:comment][:feed_id])
     @comment.commentable = @feed
     @parent = params[:comment][:parent] if params[:comment][:parent].present?
     respond_to do |format|
     if @comment.save
      format.turbo_stream
      format.html { redirect_to feeds_path, notice: "Comment was successfully created." }
      format.json { render :show, status: :created, location: @comment }
     else
      format.html { render :new, status: :unprocessable_entity }
      format.json { render json: @comment.errors, status: :unprocessable_entity }
     end
    end
   end

我的“create.turbo_stream.erb”代码如下

  <%if @parent.present?%>
     <%= turbo_stream.update("feeds-list-parent-#{@parent}",
          partial: "feeds/feed",
          locals: { feed: @feed }) %>
  <%else%>
      <%= turbo_stream.update("feeds-list-#{@feed.id}",
          partial: "feeds/feed",
          locals: { feed: @feed }) %>
  <%end%>
  console.log('hi') # this is not working here and no log. also <script> tag is not working.

如何执行一些js代码,因为我想在这里使用js隐藏弹出div?

我尝试了不同的选项来执行 js 但不起作用。

ruby-on-rails turbolinks stimulusjs turbo stimulus-rails
1个回答
0
投票

<script>
标签必须位于 Turbo 流内才能可执行:

<%= turbo_stream.update "feeds-list-#{@feed.id}" do %>
  <%= render "feeds/feed", feed: @feed %>
  <script>
    console.log("hi")
  </script>
<% end %>

或在单独的涡轮流中:

<%= turbo_stream.update "feeds-list-#{@feed.id}", partial: "feeds/feed", locals: {feed: @feed} %>

<%= turbo_stream.after "feeds-list-#{@feed.id}" do %>
  <script>
    console.log("hi")
  </script>
<% end %>
© www.soinside.com 2019 - 2024. All rights reserved.