Ruby on rails 如何通过单击按钮或链接从视图调用rails方法
基本上,我尝试在用户单击链接(或按钮或某种类型的交互元素)时执行rails方法 我试着把它放在视图中:Ruby on rails 如何通过单击按钮或链接从视图调用rails方法,ruby-on-rails,ruby,methods,view,controller,Ruby On Rails,Ruby,Methods,View,Controller,基本上,我尝试在用户单击链接(或按钮或某种类型的交互元素)时执行rails方法 我试着把它放在视图中: <%= link_to_function 'Add' , function()%> 但这似乎不起作用。它只是简单地调用函数,用户甚至没有点击“添加”链接 我也试过用link_to,但也没用。我开始觉得没有一个干净的方法可以做到这一点。无论如何,谢谢你的帮助 另外,我在ApplicationController中定义了该方法,它是一种辅助方法。视图和控制器彼此独立。为了使链接在
<%= link_to_function 'Add' , function()%>
但这似乎不起作用。它只是简单地调用函数,用户甚至没有点击“添加”链接
我也试过用link_to,但也没用。我开始觉得没有一个干净的方法可以做到这一点。无论如何,谢谢你的帮助
另外,我在ApplicationController中定义了该方法,它是一种辅助方法。视图和控制器彼此独立。为了使链接在控制器内执行函数调用,需要对应用程序中的端点执行ajax调用。路由应该调用ruby方法并返回对ajax调用回调的响应,然后您可以对响应进行解释 例如,在您看来:
<%= link_to 'Add', '#', :onclick => 'sum_fn()' %>
<%= javascript_tag do %>
function sum_fn() {
/* Assuming you have jQuery */
$.post('/ajax/sum.json', {
num1: 100,
num2: 50
}, function(data) {
var output = data.result;
/* output should be 150 if successful */
});
}
<% end %>
然后假设在MyController.rb
中有一个MyController类。然后定义方法ajax\u sum
class MyController < ApplicationController
# POST /ajax/sum
def ajax_sum
num1 = params["num1"].to_i
num2 = params["num2"].to_i
# Do something with input parameter and respond as JSON with the output
result = num1 + num2
respond_to do |format|
format.json {render :json => {:result => result}}
end
end
end
class MyController{:result=>result}
结束
结束
结束
希望就是希望 我认为这是不可能的,因为当用户点击按钮时,他正在使用他的计算机。rails代码在服务器中。您需要提供一个方法来通知rails服务器这个点击事件,也许您正在寻找的是Ajax?我认为您必须使用parens来调用函数:
:onclick=>“sum\u fn()”
。对吧?修好了谢谢!使用onclick
可能不是注册单击处理程序的最佳方式。它应该用Javascript注册,但是为了演示的目的,我认为这已经足够了。谢谢,但是您缺少了post函数的右括号。
class MyController < ApplicationController
# POST /ajax/sum
def ajax_sum
num1 = params["num1"].to_i
num2 = params["num2"].to_i
# Do something with input parameter and respond as JSON with the output
result = num1 + num2
respond_to do |format|
format.json {render :json => {:result => result}}
end
end
end