Jquery 根据模型实例调用控制器方法。轨道
在我的程序中,我使用了gem'jqueryrails',我有两个控制器: 1。汽车控制器。 2。Carroads控制器。 对于创建汽车,我在CarsController和create.js.erb文件中使用了方法create,代码如下: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 %>
$("#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'