javascripts\u path helper中的调用函数
我有这个“添加车辆”按钮,它可以渲染和添加部分视图,我会多次使用它,所以匿名函数不起作用,所以我有没有办法在link_to helper中定义函数和参数 从调用js的表单开始,我需要在其中定义函数名和参数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
...
<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调用,然后加载部分内容。现在将测试并决定选择哪种方式:)确定。让我知道你进展如何。是的,按我的方式做,如果你感兴趣,请查看我对这个问题的回答:)