Jquery 根据模型实例调用控制器方法。轨道

Jquery 根据模型实例调用控制器方法。轨道,jquery,ruby-on-rails,Jquery,Ruby On Rails,在我的程序中,我使用了gem'jqueryrails',我有两个控制器: 1。汽车控制器。 2。Carroads控制器。 对于创建汽车,我在CarsController和create.js.erb文件中使用了方法create,代码如下: $("#todo-list").append("<%= j(render(@car)) %>"); $(“#待办事项列表”)。追加(“”); 我还有index.html.erb文件,其中我有一个条件: <% if @car %>

在我的程序中,我使用了gem'jqueryrails',我有两个控制器:

1。汽车控制器。

2。Carroads控制器。

对于创建汽车,我在CarsController和create.js.erb文件中使用了方法create,代码如下:

$("#todo-list").append("<%= j(render(@car)) %>");
$(“#待办事项列表”)。追加(“”);
我还有index.html.erb文件,其中我有一个条件:

<% if @car %>
  <%= link_to(image_tag(road.image.url(:thumb)), car_roads_create_path, method: :post, remote: true) %>
<% else %>
  <%= link_to(image_tag(road.image.url(:thumb)), cars_create_path, method: :post, remote: true) %>
<% end %>

但当我点击图像时,它总是调用Cars#create,即使在创建@car之后也是如此


根据情况,我应该如何调用两种不同的方法?

您正在通过链接发布到。。。根据路线的设置方式,您可能无法访问您试图到达的路线

能否在config/routes.rb中向我们展示您为这些链接设置的路由

您是否使用链接提交表单?如果是这样,您应该使用jquery为表单和链接分配ID,如下所示:

<% if @car %>
  <%= link_to(image_tag(road.image.url(:thumb)), car_roads_create_path, id: "roads_create") %>
<% else %>
  <%= link_to(image_tag(road.image.url(:thumb)), cars_create_path, id: "car_create") %>
<% end %>

<script type='text/javascript'>
  $("#roads_create").click(function(){
    $("#road_create_form").submit();
  });
  $("#car_create").click(function(){
    $("#car_create_form").submit();
  });
</script>

$(“#创建道路”)。单击(函数(){
$(“#道路#创建#表格”).submit();
});
$(“#car_create”)。单击(函数(){
$(“#汽车创建表格”).submit();
});
另一方面,如果您没有任何表单要提交,则应使用带有链接_中参数的GET请求来传递数据


如果您提供更多信息,我们可以提供更详细的帮助。

如果您查看您的代码,在index.html.erb中您有:

<% if @car %>
  // this statement will gets executed only when you have @car set in index action of cars controller
  <%= link_to(image_tag(road.image.url(:thumb)), car_roads_create_path, method: :post, remote: true) %>
<% else %>
  // this statement will gets executed when you don't have @car index action of cars controller
  <%= link_to(image_tag(road.image.url(:thumb)), cars_create_path, method: :post, remote: true) %>
<% end %>
$("#todo-list").append("<%= j(render(@car)) %>");
更新:

根据我们的聊天,您可以这样做:

#index.html.erb
<div id="create-link">
  <%= link_to(image_tag(road.image.url(:thumb)), cars_create_path, method: :post, remote: true) %>
</div>

#_create_road_car.html.erb
<%= link_to(image_tag(road.image.url(:thumb)), car_roads_create_path, id: "roads_create") %>

#create.js.erb
$("#todo-list").append("<%= j(render(@car)) %>");
$("#create-link").html("<%=j render partial: "create_road_car", locals: {road: @your_road_variable}  %>");
#index.html.erb
<div id="create-link">
  <%= link_to(image_tag(road.image.url(:thumb)), cars_create_path(road: road), method: :post, remote: true) %>
</div>

#car_roads_controller.rb
def create
  #other code
  @road = params[:road]
end

#create.js.erb
$("#todo-list").append("<%= j(render(@car)) %>");
$("#create-link").html("<%=j render partial: "create_road_car", locals: {road: @road}  %>");
#index.html.erb
#car\u roads\u controller.rb
def创建
#其他代码
@道路=参数[:道路]
结束
#create.js.erb
$(“#待办事项清单”)。追加(“”);
$(“#创建链接”).html(“”);

在我的config.rb文件中,我有以下代码:
发布‘cars/create’=>‘cars#create’
发布‘car#roads/create’=>‘car#roads#create’@SvyatMuzyka什么?对不起,你没听懂吗?你的意思是在config/routes.rb中有这些路由?我们在link_to中使用post动词,所以应该不会有任何问题,我传递的局部变量部分用于图像标记,
image_标记(road.image.url(:thumb)
@SvyatMuzyka没问题你试过了吗?成功了吗?@Mandeeo没用。但我可以用另一个词来描述我的问题吗?我需要调用Cars#create来创建一辆车。调用此方法后,它会在该页面上呈现一些关于车的信息,而不需要重新加载,然后我应该调用CarRoads#create。所有方法都应该调用g在一个页面上,没有重新加载。@SvyatMuzyka它应该适合你。你能告诉我哪个部分不适合你吗?如果不适合,你会得到什么错误?在我的config.rb文件中,我有以下代码:
post'cars/create'=>'cars#create'
post'car#u roads/create'=>'car#create'