我试图在表单中使用一些javascript来从选择下拉框中获取值,并将其用于表单的另一部分。我无法弄清楚语法。
首先是 javascript 函数(我将其放在 View 的末尾):
<script type="text/javascript">
function return_event_id()
{
var event_id = document.getElementById("event_id");
return event_id.value;
}
</script>
在 View 中,我有以下内容:
<%= select("discount_code", :event_id, events_ids_titles_hash, { :include_blank => true }) %>
如果我添加以下语句:
return_event_id
然后,我选择的下拉项将显示在表单上(尽管我也看到了“return_event_id”一词)。
如果我做这样的事情:
<% selected_event_id = return_event_id %>
我收到以下错误消息:未定义的局部变量或方法“return_event_id”
我正在寻找的是能够将 event_id 值存储在变量中。正确的语法是什么?
其他详细信息和对答案的评论:
1:是的,Ruby 代码 = 服务器,javascript 代码 = 客户端
2:将代码放入 application.js 之类的内容中会将其移出 view.erb 模块,但据我所知,它不会改变结果。
我知道 <% selected_event_id = return_event_id %> 不起作用,但我确实需要达到这样的程度:我可以以某种方式将 return_event_id 的输出传递回服务器,然后将其捕获到 Ruby 变量中,或者,是否有办法使用 javascript 函数输出来设置表单中的另一个元素。
最佳答案
对于初学者来说,最好将 JavaScript 与 View 分开:
将你的js写在一个单独的文件中,根据你的rails版本将其放在公共(public)或你的 Assets 目录中。 然后,如果您使用的是raila 3.1+,它将自动加载您的资源,如果低于3.1,请将以下内容添加到您的 View 中(在顶部)
<%= javascript_include_tag "my_javascript_filename" %>
从那里您可以创建一个返回到您的 Rails 应用程序的 Ajax 请求(这意味着编写 Controller 代码和处理此问题的路由)以获取您想要的项目列表:
http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/
我建议使用上述 URL 中的 getJSON 方法
关于javascript - rails : proper syntax for using a javascript function inside a rails view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11503867/