Javascript 在rails中创建新模型时,如何触发一次JS代码?

Javascript 在rails中创建新模型时,如何触发一次JS代码?,javascript,html,ruby-on-rails,ruby,Javascript,Html,Ruby On Rails,Ruby,当有人创建一个新的鸡尾酒模型时,我试图在我的展示页面上播放一个“成就解锁”JS动画。因此,它应该只在该特定页面上播放一次,而不再播放。我有点纠结于如何在不为数据库中的“成就”创建单独的表的情况下做到这一点。有人有简单的解决方案吗?这是我的控制器(NUM、@NUM和@num2是我创建的变量,用于找出解决方案,请随意取消规则): class CocktailsController

当有人创建一个新的鸡尾酒模型时,我试图在我的展示页面上播放一个“成就解锁”JS动画。因此,它应该只在该特定页面上播放一次,而不再播放。我有点纠结于如何在不为数据库中的“成就”创建单独的表的情况下做到这一点。有人有简单的解决方案吗?这是我的控制器(NUM、@NUM和@num2是我创建的变量,用于找出解决方案,请随意取消规则):

class CocktailsController
我的HTML(第一个div是动画的HTML。我当前的代码允许动画在第七次鸡尾酒会之后创建的所有鸡尾酒会页面中播放多次):


成就解锁!
这里是一些互联网点



在crreate后的重定向中,在参数中传递该信息(该信息是否为第一个),并在呈现视图中检查参数[:first_time]是否存在?在这种情况下执行JS。
您不需要在params中允许它,因为它不是从视图“发布”到控制器的内容。NameError表示您没有定义它,这是因为您正在发送@num2=@num2(params散列中的键值对),而u没有定义num2的值。您可以执行num2:“我是num2”或任何操作:)

在crreate后在重定向中的params中传递该信息(它是第一个还是不是第一个的信息),如果params[:first_time]存在,请签入呈现视图
并在这种情况下执行JS。@ARK请详细说明,对不起,我还是一个初学者。我知道我可以将HTML中的条件语句替换为“if params[:first_time]。exists?”,但我应该在控制器中做什么?在成功的重定向#create中,您可以像这样传递参数:
redirect_到鸡尾酒路径(@cockbox,num2:num2)
将使重定向路径:
/cocktails/3/show?num2=
然后您可以从您的#show视图访问params[:num2],或者您不需要在params中允许它,因为它不是从视图“发布”到控制器的内容。Nameerror表示您没有定义它,这是因为您发送num2=num2(参数散列中的键值对),而u没有定义num2的值。你可以做num2:“我是num2”或任何事情,这都可以:)@ARK很抱歉回复太晚了!是的,请便!再次感谢你
class CocktailsController < ApplicationController
  NUM = Cocktail.count
  def index
    @cocktails = Cocktail.all
  end

  def show
    @cocktail = Cocktail.find(params[:id])
    # @dose = Dose.new
    @num = NUM
  end

  def new
    @cocktail = Cocktail.new
  end

  def create
    @cocktail = Cocktail.new(cocktail_params)
    @num = NUM
    if @cocktail.photo.attached?
      @num2 = @num + 2
      @cocktail.save
      redirect_to cocktail_path(@cocktail)
    else
      redirect_to new_cocktail_path,
                  warning: "Sorry, you can't create a cocktail without
                  uploading an image"
    end
  end

  def edit
    @cocktail = Cocktail.find(params[:id])
  end

  def update
    @cocktail = Cocktail.find(params[:id])
    @cocktail.update(cocktail_params)
    redirect_to root_path
  end

  def destroy
    @cocktail = Cocktail.find(params[:id])
    @cocktail.destroy

    # redirect_to root_path
  end

  private

  def cocktail_params
    params.require(:cocktail).permit(:name, :photo)
  end
end

<% if @num < 7 %>
  <div id="achievement" class="">
    <div class="circle"></div>
    <div class="copy">
      <h4>Achievement Unlocked!</h4>
      <p>Here are some internet points!</p>
    </div>
  </div>
<% end %>


<div class="banner" style="background-image: linear-gradient(rgba(0,0,0,0.4),rgba(0,0,0,0.4)), url( <% if @cocktail.photo.attached? %> <%= cl_image_path @cocktail.photo.key %> <% else %> https://raw.githubusercontent.com/lewagon/fullstack-images/master/uikit/lunch.jpg <% end %>)">
  <div class="container">
    <h1><%= @cocktail.name %></h1>
  </div>
</div>

<br>
<div class="center">
  <%= link_to "Add A New Dose", new_cocktail_dose_path(@cocktail), class: "btn btn-ghost" %>
</div>

<div class="cards">
<% @cocktail.doses.each do |dose| %>
  <div class="card" >
    <div class="card-body">
      <h5 class="card-title"><%= dose.ingredient.name %></h5>
      <p class="card-text"><%= dose.description %></p>
      <%= link_to "Delete", cocktail_dose_path(@cocktail, dose), class: "btn btn-dark", method: :delete %>
    </div>
  </div>
<% end %>
</div>


<br>
<div class="center">
  <%= link_to "Back", root_path, class: "btn btn-ghost" %>
</div>