turbo_stream从控制器的工作,但不能从视图

发布于 2025-02-12 00:09:01 字数 1015 浏览 0 评论 0原文

我正在使用Hotwire在Rails 7应用程序上工作。 我有一个表单模态,当subimimimimimimimimimimim时,Turbo应该从模态中删除HTML并显示闪存消息。

当我将涡轮代码放在控制器中时,我可以工作:

# emails_controller.rb
  def forward
    service = Email::Forward.new(
      recipients: params[:recipients].split(','),
      sender: current_user.email,
      html: params[:html_to_forward]
    ).call

    if service.errors.empty?
      flash.now[:success] = t('.success')
    else
      flash.now[:error] = t('.error')
    end

    respond_to do |format|
      format.turbo_stream do
        render turbo_stream: [
          turbo_stream.update('forward_modal', ''),
          turbo_stream.update('flash', partial: 'shared/flash', locals: { flash: flash })
        ]
      end
    end

但是,当我尝试将相同的代码放在向前。Turbo_stream.slim视图时,它无能为力,而且我没有错误消息。

# views/emails/forward.turbo_stream.rb
= turbo_stream.update('forward_modal', '')
= turbo_stream.update('flash', partial: 'shared/flash', locals: { flash: flash })

对正在发生的事情有什么想法吗?

I'm working on a rails 7 app with hotwire.
I have a form modal, when subimited, turbo should remove html from modal and show flash message.

When i put my turbo code in my controller i works:

# emails_controller.rb
  def forward
    service = Email::Forward.new(
      recipients: params[:recipients].split(','),
      sender: current_user.email,
      html: params[:html_to_forward]
    ).call

    if service.errors.empty?
      flash.now[:success] = t('.success')
    else
      flash.now[:error] = t('.error')
    end

    respond_to do |format|
      format.turbo_stream do
        render turbo_stream: [
          turbo_stream.update('forward_modal', ''),
          turbo_stream.update('flash', partial: 'shared/flash', locals: { flash: flash })
        ]
      end
    end

But when i try to put the same code in a forward.turbo_stream.slim view, it do nothing, and i have no error message.

# views/emails/forward.turbo_stream.rb
= turbo_stream.update('forward_modal', '')
= turbo_stream.update('flash', partial: 'shared/flash', locals: { flash: flash })

Any idea about what is happening ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半窗疏影 2025-02-19 00:09:01

也许是一个错字...但是您的代码将文件引用为“视图/emails/forward.turbo_stream.rb”,但可能应该是“视图/emails/forwars.turbo_stream. slim ”?或者,也许您都有两个文件,并且仅在坏文件中具有好的代码?我用“ Action.html.Slim”与“ Action.turbo_stream.slim”犯了类似的错误。花一段时间习惯了新的命名约定。

Maybe a typo... but your code references the file as "views/emails/forward.turbo_stream.rb", but should probably be "views/emails/forward.turbo_stream.slim"? Or perhaps you have both files and have the good code only in the bad file? I've made similar mistakes with "action.html.slim" vs. "action.turbo_stream.slim". Taking a while to get used to the new naming convention.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文