Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascripts\u path helper中的调用函数_Javascript_Ruby On Rails - Fatal编程技术网

javascripts\u path helper中的调用函数

javascripts\u path helper中的调用函数,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有这个“添加车辆”按钮,它可以渲染和添加部分视图,我会多次使用它,所以匿名函数不起作用,所以我有没有办法在link_to helper中定义函数和参数 从调用js的表单开始,我需要在其中定义函数名和参数 ... <div id="add_vehicle_div_button2"> <%= link_to 'Add vehicle', attach_vehicle_path, remote: true, id: "add_vehicle_button2" %> &l

我有这个“添加车辆”按钮,它可以渲染和添加部分视图,我会多次使用它,所以匿名函数不起作用,所以我有没有办法在link_to helper中定义函数和参数

从调用js的表单开始,我需要在其中定义函数名和参数

...
<div id="add_vehicle_div_button2">
   <%= link_to 'Add vehicle', attach_vehicle_path, remote: true, id: "add_vehicle_button2" %>
</div>
<div id="attached_vehicle2" style="display:none;"></div>
...
function addAttachVehicleFields(newAttachVehicleDiv, addVehicleDivButton, attachVehiclePartial) {
    $(newAttachVehicleDiv).html("<%= escape_javascript (render #{attachVehiclePartial}) %>");
    $(newAttachVehicleDiv).slideDown(350);
    $(addVehicleDivButton).css('display', 'none');
}
。。。
...
。/view/diys/attach_vehicle.js.erb它所指向的位置

...
<div id="add_vehicle_div_button2">
   <%= link_to 'Add vehicle', attach_vehicle_path, remote: true, id: "add_vehicle_button2" %>
</div>
<div id="attached_vehicle2" style="display:none;"></div>
...
function addAttachVehicleFields(newAttachVehicleDiv, addVehicleDivButton, attachVehiclePartial) {
    $(newAttachVehicleDiv).html("<%= escape_javascript (render #{attachVehiclePartial}) %>");
    $(newAttachVehicleDiv).slideDown(350);
    $(addVehicleDivButton).css('display', 'none');
}
功能addAttachVehicleFields(新建AttachVehicleDiv、addVehicleDiv按钮、attachVehiclePartial){
$(newAttachVehicleDiv).html(“”);
$(新附加车辆IV)。向下滑动(350);
$(addVehicleDivButton).css('display','none');
}
从那里,它呈现出部分定义


我之所以在视图文件夹中自己的文件中有此函数,是因为我需要它有自己的控制器操作。

我不确定您在这里想要实现什么。如果我没有弄错的话,您是在单击按钮后尝试从部分向页面添加元素

如果您使用TurboLink,则可以尝试部分替换

然而,当我在我的一个项目上工作并且需要上述功能时——无论我做什么,它都不起作用。所以我决定使用
renderjs:
实现我自己的。基于此,我将做以下几点:

将js函数附加到全局可访问变量,例如:

app/assets/stylesheets/javascripts/vehicles.coffee

@Vehicles =
  addAttachVehicleFields: (newAttachVehicleDiv, addVehicleDivButton, attachVehiclePartialHtml) ->
    $(newAttachVehicleDiv).append(attachVehiclePartialHtml);
    $(newAttachVehicleDiv).slideDown(350);
    $(addVehicleDivButton).css('display', 'none');
# Add fields for additional vehiclesS
addVehicleFields = (addVehicleButton, newAttachVehicleDiv, attachVehiclePartial, addVehicleDivButton) ->
    $(document).on 'click', addVehicleButton, (evt) ->
        $.ajax 'attach_vehicle',
            type: 'GET'
            dataType: 'script'
            data: {
                addVehicleButtonDiv: addVehicleDivButton,
                newVehicleDiv: newAttachVehicleDiv,
                newVehiclePartial: attachVehiclePartial
            }
            error: (jqXHR, textStatus, errorThrown) ->
                console.log("AJAX Error: #{textStatus}")
            success: (data, textStatus, jqXHR) ->
                console.log("Addin new vehicle fields OK!")

addVehicleFields '#add_vehicle_button2', '#attached_vehicle2', 'diys/attach_vehicles/attach_vehicle2_form', '#add_vehicle_div_button2'
addVehicleFields '#add_vehicle_button3', '#attached_vehicle3', 'diys/attach_vehicles/attach_vehicle3_form', '#add_vehicle_div_button3'
...
然后在处理此请求的具体操作中(附加车辆路径):

然后,您可以使用以下内容修改指向帮助器的链接:

<%= link_to 'Add vehicle', attach_vehicle_path(vehicle_div: [your_div_selector_here], vehicle_div_button: [your_div_button_selector_here]), remote: true, id: "add_vehicle_button2" %>

我在这里展示这个想法,你可能想用你自己的方式来实现它。我和我的同事正在开发gem来提供这个功能


我希望这是有帮助的。如果有问题,请告诉我

不要认为这是最好的方法,但我没有想出更好的主意,所以

在中创建了新函数

。/app/assets/javascripts/diys.coffee

@Vehicles =
  addAttachVehicleFields: (newAttachVehicleDiv, addVehicleDivButton, attachVehiclePartialHtml) ->
    $(newAttachVehicleDiv).append(attachVehiclePartialHtml);
    $(newAttachVehicleDiv).slideDown(350);
    $(addVehicleDivButton).css('display', 'none');
# Add fields for additional vehiclesS
addVehicleFields = (addVehicleButton, newAttachVehicleDiv, attachVehiclePartial, addVehicleDivButton) ->
    $(document).on 'click', addVehicleButton, (evt) ->
        $.ajax 'attach_vehicle',
            type: 'GET'
            dataType: 'script'
            data: {
                addVehicleButtonDiv: addVehicleDivButton,
                newVehicleDiv: newAttachVehicleDiv,
                newVehiclePartial: attachVehiclePartial
            }
            error: (jqXHR, textStatus, errorThrown) ->
                console.log("AJAX Error: #{textStatus}")
            success: (data, textStatus, jqXHR) ->
                console.log("Addin new vehicle fields OK!")

addVehicleFields '#add_vehicle_button2', '#attached_vehicle2', 'diys/attach_vehicles/attach_vehicle2_form', '#add_vehicle_div_button2'
addVehicleFields '#add_vehicle_button3', '#attached_vehicle3', 'diys/attach_vehicles/attach_vehicle3_form', '#add_vehicle_div_button3'
...
这导致了

。/app/views/diys/attach_vehicle.js.erb

$("<%= @newAttachVehicleDiv %>").html("<%= escape_javascript (render  @attachVehiclePartial) %>");
$("<%= @newAttachVehicleDiv %>").slideDown(350);
$("<%= @addVehicleDivButton %>").css('display', 'none');
并将按钮路径更改为“#”



感谢您的努力!我在想,如果我不能想出更好的主意,我将在assets/javascripts/related.coffee中创建onclick函数,该函数将通过ajax attach_vehicle.js.erb调用,然后加载部分内容。现在将测试并决定选择哪种方式:)确定。让我知道你进展如何。是的,按我的方式做,如果你感兴趣,请查看我对这个问题的回答:)