gpt4 book ai didi

javascript - Rails js 调用出现 404,可能是错误的路由定义

转载 作者:行者123 更新时间:2023-12-03 12:24:40 25 4
gpt4 key购买 nike

单击旨在将某些数据加载到部分数据的链接时,我收到以下 JavaScript 错误:

GET http://localhost:3000/activate_foo_path 404 (Not Found) 

我有以下链接:

<%=link_to foo.name, "activate_#{foo.name.gsub(' ', '_').downcase}_path", :remote => true %>

这是我的路线条目:

get "activate_foo" => 'bar#activate_foo', :as => :activate_foo

Controller 方法:

 def activate_foo
@bars = Bar.includes(:fobs).where(:fobs => {:id => 1})
respond_to do |format|
format.js
end
end

我有一个文件views/bars/activate_foo.js,其内容为:

$("#bar-listings").html("<%= escape_javascript(render partial: 'foo', locals: { bars: @bars } ) %>");

这是应该替换的 div:

<div id="data-service-listings">
<p>Whatever</p>
</div>

然后我有_foo.html.erb:

<% @bars.each do |bar| %>
Do stuff with <%= bar %>
<% end %>

我感觉我的路线写错了。我尝试过摆弄它并移动文件。

此外,请随时就我正在使用的策略提供总体建议。

谢谢。

编辑:更新了链接定义。

最佳答案

如果您想链接到特定资源,通常需要在对 foo_path 的调用中包含模型实例。下面的代码是解决这个问题的更 Railsy 的方式:

routes.rb

resource :businesses

get 'activate_billing/:id' => 'billing#activate', :as => :activate_billing

我对 Rails 路线有点生疏,因此 activate_billing 的路线可能不正确。

businesses_controller.rb

class BusinessesController < ApplicationController
def index
@businesses = Business.all
end
end

app/views/businesses/index.html.erb

<% @businesses.each |business| do
<%= link_to business.name, activate_billing_path(business), :remote => true %><br>
<% end %>

activate_billing_path 的调用会传递 business 对象,该对象应在 Controller 中设置 Id param,并生成如下 URL: /activate_billing/123,其中 123business.id

billing_controller.rb

class BillingController < ApplicationController
def activate
business = Business.find(params[:id])
business.billing.activate
render :success
end
end

Controller 只会发回 200 OK 响应,除非您需要渲染特定内容。通过您在问题中包含的代码很难判断。

关于javascript - Rails js 调用出现 404,可能是错误的路由定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24266969/

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