Ruby on rails 不能';找不到与';id'=用ajax显示

Ruby on rails 不能';找不到与';id'=用ajax显示,ruby-on-rails,ruby,ajax,Ruby On Rails,Ruby,Ajax,我正在使用NetBeans IDE、rails 4、ruby 2.2.0。我试图使用ajax来显示“show”页面,但是,取而代之的是,获取“id”=show error的“找不到”事务。在format.html中,我使用一个“id”属性来设置事务值,在ajax中如何实现这一点 format.html { render :action => 'show',:id=>@transaction } --- id is set format.js {render :js =>

我正在使用NetBeans IDE、rails 4、ruby 2.2.0。我试图使用ajax来显示“show”页面,但是,取而代之的是,获取“id”=show error的“找不到”事务。在format.html中,我使用一个“id”属性来设置事务值,在ajax中如何实现这一点

  format.html { render :action => 'show',:id=>@transaction } --- id is set
  format.js {render :js => "window.location = '/transactions/show'"}  --
  -   how do I set an 'id' property in js?

谢谢。

假设事务的路由是按照rails约定定义的,您只需执行以下操作:

"window.location='#{transaction_path(@transaction)}'"

如果这不起作用,请添加
routes.rb文件的内容,以便我们正确回答。

假设事务的路由是按照rails约定定义的,您只需执行以下操作:

"window.location='#{transaction_path(@transaction)}'"

如果这不起作用,请添加
routes.rb文件的内容,以便我们能够正确回答。

在上述内容中,只需进行以下编辑:

format.js {render :js => "window.location = '/transactions/#{@transaction.id}'"} 
# the above should render something like '/transactions/12345' as the URI/URL
简而言之,
/transactions/show
不是标准Rails显示页面的有效URI。在终端窗口中,运行
rake routes
,您将看到事务和所有其他路由的类似内容:

transactions GET /transactions/:id(.:format) transactions#show

所以。。。上面路由描述中的:id需要是已保存对象/实例的实际id,而不是创建链接时的字符串“show”。通过这种方式,Rails路由器知道如何处理请求(即,调用哪个控制器,传递什么数据,等等)

在上述内容中,只需进行以下编辑:

format.js {render :js => "window.location = '/transactions/#{@transaction.id}'"} 
# the above should render something like '/transactions/12345' as the URI/URL
简而言之,
/transactions/show
不是标准Rails显示页面的有效URI。在终端窗口中,运行
rake routes
,您将看到事务和所有其他路由的类似内容:

transactions GET /transactions/:id(.:format) transactions#show
所以。。。上面路由描述中的:id需要是已保存对象/实例的实际id,而不是创建链接时的字符串“show”。通过这种方式,Rails路由器知道如何处理请求(即,调用哪个控制器,传递什么数据,等等)

而不是:

format.js {render :js => "window.location = '/transactions/show'"}
做:

此处
transactions\u路径(@transaction)
将计算为事务显示页面的相对路径。问题在映射到routes.rb中的
/transactions/show
中。在
TransactionController#show
中,代码试图查找id为
show
的交易,因此出现错误。

而不是:

format.js {render :js => "window.location = '/transactions/show'"}
做:


此处
transactions\u路径(@transaction)
将计算为事务显示页面的相对路径。问题在映射到routes.rb中的
/transactions/show
中。在
transactioncontroller#show
中,代码试图查找id为
show
的事务,因此出现错误。

您在什么路径上遇到此错误?您在什么路径上遇到此错误?如果事务路径发生变化(在正常情况下不会发生变化),这将在今后的道路上造成问题。。。你的答案是绝对正确的,但是,解决方案有点脆弱,因为不使用路径辅助程序进行路由。我同意。。。我的回答与她的问题更直接相关,但我再次完全同意,助手是一种更理想的方法。如果交易的路径发生变化(正常情况下不会发生变化),这将导致今后的问题。。。你的答案是绝对正确的,但是,解决方案有点脆弱,因为不使用路径辅助程序进行路由。我同意。。。我给出了一个与她的问题更直接相关的答案,但我再次完全同意助手是一个更理想的方法。