Jquery 如何将模型属性传递给coffeescript,以便在Rails中选择2模板

Jquery 如何将模型属性传递给coffeescript,以便在Rails中选择2模板,jquery,ruby-on-rails,coffeescript,jquery-select2,Jquery,Ruby On Rails,Coffeescript,Jquery Select2,我正在尝试在Rails 3.2应用程序中实现 具体来说,我想使用模板来显示带有国旗+国家名称的国家选择字段 我有一个国家模式和用户模式。我的国家/地区模型具有:code属性。我使用CSS精灵来显示基于:code属性的标志 <img class="flag flag-#{country.code}"> 在我的用户表单中 在user.js.coffee.erb中 我很难将它们联系在一起,这可能是我正在学习asset pipeline和js.erb如何工作的一部分 当

我正在尝试在Rails 3.2应用程序中实现

具体来说,我想使用模板来显示带有国旗+国家名称的国家选择字段

我有一个国家模式和用户模式。我的国家/地区模型具有:code属性。我使用CSS精灵来显示基于:code属性的标志

<img class="flag flag-#{country.code}">
在我的用户表单中

在user.js.coffee.erb中

我很难将它们联系在一起,这可能是我正在学习asset pipeline和js.erb如何工作的一部分

当前,select字段使用select2呈现,但仅包含国家/地区列表。没有格式

如何将每个国家/地区传递给format=country函数,以便使用标志对其进行格式化

感谢您的指点。

来自:

格式选择

用于渲染当前选择的函数

<%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: true %>
对象参数是

从查询函数返回的所选结果对象

再往下一点,我们可以看到查询的全部内容,特别是:

结果对象的数组。默认渲染器需要具有id和文本键的对象。id属性是必需的,即使使用了自定义渲染器

如果我们看一个例子,我们会看到format函数被传递给一个带有id和文本键的country对象。另一方面,您正在查看country.code,但那里什么都没有,您生成的图像如下:

jQuery ->  
    format = (country) ->
        "<img class='flag flag-#{country.code}' src='#'/>" + country.name       
    $('#prerep_country_id').select2
        placeholder: "Select a country",
        allowClear: true,
        formatResult: format,
        formatSelection: format
所以你没有得到任何旗帜

请尝试以下方法:

formatSelection(object)
大概你的img.flag CSS中已经有了高度和宽度,所以我们不必担心这些标志有多大


另外,如果您使用的是HTML5,那么您可能会丢失XML样式/>自动关闭标记的功能,这很好。

感谢您提供了一个非常有用的答案。因此,为了澄清,如果我需要:code属性,我可以执行类似于“@AndyHarvey:Is$'prerep\u country\u id”的操作。选择2是否会被调用?在传递给format的国家/地区中应该有一个id,是否调用format?是的,$'prerep_country_id'。正在调用select2,但format没有。什么什么是解决这个问题并找出它失败的地方的最佳方法?@AndyHarvey:你绝对确定没有调用该格式吗?它在中运行良好,那么有什么不同呢?你检查过你的空白吗?嗨,穆,检查我的调试器我看到了未捕获的引用错误:未定义格式。我还没有真正理解变量country来自哪里,它被传递到了format。我觉得这可能是我的问题。
<img class='flag flag-' src='#'/>
format = (country) ->
    "<img class='flag flag-#{country.id}' src='#'/>" + country.name
    #--------------------------------^^