Ruby on rails 使用Ajax替换基于Onclick事件的页面元素
我正在重新阐述这个问题,因为我现在对这个问题有了更好的理解 我的应用程序有四种型号:用户、产品、品种和季节 用户Ruby on rails 使用Ajax替换基于Onclick事件的页面元素,ruby-on-rails,ajax,partials,page-replacement,Ruby On Rails,Ajax,Partials,Page Replacement,我正在重新阐述这个问题,因为我现在对这个问题有了更好的理解 我的应用程序有四种型号:用户、产品、品种和季节 用户 有很多:季节 有很多:产品,:通过=>:季节 有许多:品种,:至=>:季节 产品 有很多:季节 拥有多个:用户,:至=>:季节 有很多:品种 多样性 属于:产品 有很多:季节 拥有多个:用户,:至=>:seasons 季节 属于:产品 属于:用户 属于:品种 在product/show视图中,我列出了特定产品可用的每个品种,以及携带该特定产品的用户 当产品/展示页面首次加载时,我会通
有很多:季节
有很多:产品,:通过=>:季节
有许多:品种,:至=>:季节
产品有很多:季节
拥有多个:用户,:至=>:季节
有很多:品种
多样性属于:产品
有很多:季节
拥有多个:用户,:至=>:seasons
季节属于:产品
属于:用户
属于:品种
在product/show视图中,我列出了特定产品可用的每个品种,以及携带该特定产品的用户
当产品/展示页面首次加载时,我会通过以下方式显示携带产品的所有用户:
<% @product.seasons.each do |c| %>
<%= link_to c.user.name, c.user %>
<% end %>
日志引用了#4,并将4作为操作引用。4是我单击的项目的品种ID
以下是我的设置:
产品控制器#显示@product=product.find(参数[:id])
@品种=@product.variates @users=@product.users 产品/展会视图 #列出拥有此产品的用户
<div id="userList">
<%= render :partial => "products/users" %>
</div>
#Lists the varieties available for this product
<% @product.varieties.each do |variety| %>
<%= link_to_remote variety.name, :url => variety_path(variety) %>
<% end %>
品种/show.js.rjs@page.replace_html“userList”,:partial=>“products/users”,:collection=>@variation.users 因此,目前,页面正在呈现和显示正确的html和数据。但onclick没有发挥作用。当我单击某个品种时,应用程序无法正确处理请求,用户列表也不会更改 更新 对安纳托利评论的回应: 我不确定到底需要增加什么路线。我尝试添加以下内容,但结果与以前相同: map.resources:variations,:member=>{:show=>:get} 您能更具体地说明应该叫什么会员路线吗 应为应为如评论中所述(应列为答案): Add:method=>:访问您的link\u to\u远程调用,对该URL使用“show”的正确HTTP动词。如注释中所述(应作为答案列出):
Add:method=>:访问您的link\u to\u远程调用,对该URL使用正确的HTTP动词“show”。我的问题中有一个拼写错误。我修好了。还有其他想法吗?在config/routes.rb中,应该在控制器的:member部分声明适当的操作(以避免未知错误操作没有响应4)。我添加了一个更新来跟进这一点。我不确定你认为应该增加什么路线。我想我发现了问题所在。Ajax默认使用POST,但您的路由需要GET,您应该修复如下链接::html=>{:method=>:GET}(我不是舒尔语法,但基本上是想法),这是我问题中的一个输入错误。我修好了。还有其他想法吗?在config/routes.rb中,应该在控制器的:member部分声明适当的操作(以避免未知错误操作没有响应4)。我添加了一个更新来跟进这一点。我不确定你认为应该增加什么路线。我想我发现了问题所在。默认情况下Ajax使用POST,但您的路由需要GET,您应该修复如下链接::html=>{:method=>:GET}(我不是舒尔语法,但基本上是想法)是的!这就是问题所在。谢谢,是的!这就是问题所在。谢谢
<% @variety.seasons.each do |c| %>
<%= link_to c.user.name, c.user %>
<% end %>
Processing VarietiesController#4 (for ip at 2009-09-24 16:02:29) [POST]
Parameters: {"authenticity_token"=>"9pDgKrHNbg0aMklsQsGl5BQa34bfr0Ft8Fpbxki3XXw="}
ActionController::UnknownAction (No action responded to 4. Actions: check_vendor_role, index, and show)
<div id="userList">
<%= render :partial => "products/users" %>
</div>
#Lists the varieties available for this product
<% @product.varieties.each do |variety| %>
<%= link_to_remote variety.name, :url => variety_path(variety) %>
<% end %>
def show
@variety = Variety.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @variety}
format.js
end
end