gpt4 book ai didi

ruby-on-rails - ActionMailer link_to 显示操作失败, "missing required keys: [:id]"

转载 作者:行者123 更新时间:2023-12-04 23:49:35 26 4
gpt4 key购买 nike

我正在尝试将显示操作的链接放入由 rails action mailer 呈现的 View 中。

mailer.rb

class Mailer < ActionMailer::Base
default from: "foo@bar.com"

def catalog_download_request(email, catalog)
@catalog = catalog

mail({
to: email
})
end

end

路线.rb
Rails.application.routes.draw do

scope "(:locale)" do
resources :catalogs, :path => I18n.t("routes.catalogs"), only: [:index, :show]
end

end

development.rb:
config.action_mailer.default_url_options = { host: "http://localhost:3000" }
config.action_mailer.asset_host = "http://localhost:3000"

config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = {
address: "localhost",
port: 1025
}

config.action_mailer.raise_delivery_errors = false

我调用邮寄者的模型:
class CatalogDownloadRequest < ActiveRecord::Base
belongs_to :catalog

after_create :send_mail

private

def send_mail
Mailer.catalog_download_request(email, catalog).deliver
end

end

这就是我在我看来尝试过的:
<%= link_to @catalog %>

错误:

ActionView::Template::Error: No route matches {:action=>"show", :controller=>"catalogs", :format=>nil, :id=>nil, :locale=>#} missing required keys: [:id]



另一个尝试:
<%= link_to catalog_url(@catalog) %>

错误:

ActionView::Template::Error: No route matches {:action=>"index"}



我怀疑这是因为我在路线上的语言环境范围。

如果我使用 <%= link_to catalog_url(@catalog) %>从另一个角度来看,它是有效的。

已解决:
<%= link_to catalog_url(:id => @catalog.id), catalog_url(:id => @catalog.id) %>

最佳答案

ActionView::Template::Error: No route matches {:action=>"index"}的原因是:
link_to需要两个参数(文本和网址)( api )。你只通过了一个。将文本作为第一个参数传递后,它将正常工作。

如果你真的想要,根据文档,你将 nil 作为第一个参数传递,然后将 url 作为第二个参数传递。

关于ruby-on-rails - ActionMailer link_to 显示操作失败, "missing required keys: [:id]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com