javascript - 在 erb 中的 <% %> 内使用 javascript 变量 - Ruby on Rails

标签 javascript ruby-on-rails erb

我正在使用select_tagonchange 。我需要调用辅助方法并将所选项目的值作为参数传递:

这就是我的辅助方法的样子

def find_template(temp)
    "Hello #{temp}!"
end

我需要做的是使用 javascript 获取用户的选择,并将其传递给 find_template 。如果我传递一个字符串而不是模板,它就可以正常工作,即 <% @header = find_template("option_1") %>但是当我使用var template时我收到以下错误:

undefined local variable or method `template' for ...

这是我的 erb

<% content_for :javascript do %>
    <script>
        function template() {
            var e = document.getElementById("category");
            var template = e.options[e.selectedIndex].text;
            <% @header = find_template(template) %>
        }
    </script>
<% end %>

<%= select_tag(:category, options_for_select(
                 Blah::TYPES.map {|k, v| [v['name'], k] }),
                 {onChange: 'template()'}) %>

<div id="template-overview">
    <table>
        <tr>
            <% @header.each do |column| %>
                <th class="<%= cycle('even', 'odd') -%>">
                    <%= column %>
                </th>
            <% end %>
        </tr>
    </table>
</div>

最佳答案

已解决:正确的方法是使用ajax:

在你的page.erb

<% content_for :javascript do %>
    <script>
        $(document).ready(function(){
            $("#category").change(function(){
                var temp_name = $('#category').val();
                $.ajax({
                    url: "/YOUR_PATH/"+temp_name,
                    dataType: "html",
                    type: "GET",
                    data: {ANY_DATA: VALUES},
                    success: function(data){
                        jQuery("#template_overview").html(data);
                    }
                });
            });
        });
    </script>
<% end %>

<div id="template_overview">
</div>

有一个部分填充您的 div

在 Controller 中:

def display_template
    .
    .
    .
    .
    render partial: '/PATH/template_overview', header: @header
end

当然还有路线

get 'controller/display_template/:temp_id' => 'controller#display_template'

关于javascript - 在 erb 中的 <% %> 内使用 javascript 变量 - Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38364780/

相关文章:

ruby - 如何使用 ERB 找到模板文件的路径?

javascript - Angular ng 内容 : how to use parents data as children input

javascript - 防止双击创建帐户两次

ruby-on-rails - Rails 架构?

jquery - Rails Jquery 从另一个 js.erb 文件渲染 js.erb 部分

ruby-on-rails - 如何将变量值插入 ERB 模板中的 HTML 标签?

javascript - 设置对象绕世界轴的绝对旋转

javascript - 显示基于 Angular 中另一个选择的选项列表

ruby-on-rails - apachePassenger需要什么权限

javascript - 如何防止 Backbone 应用程序中的后退按钮重新加载页面