首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让f.globalize_fields_for使用globalize 4.0.2红宝石出现

无法让f.globalize_fields_for使用globalize 4.0.2红宝石出现
EN

Stack Overflow用户
提问于 2014-08-17 19:00:55
回答 1查看 556关注 0票数 0

我使用的是rails 4.1.4和ruby2.1.2、globization4.0.2、batch_translations 0.1.3 (除了使用这个gem我无法让f.globalize_fields_for工作)、i18n 0.6.11和friendly_id 5.0.1。

posts/_form.html.erb,中,我有两种不同的方式使用f.globalize_fields_for (我正在尝试一切),但是f.globalize_fields_for会隐藏在浏览器中。如何使它不会自动隐藏

posts/_form.html.erb:

我不知道为什么,也不知道如何让它发挥作用。

代码语言:javascript
复制
<%= form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="form-group">
    <%= f.label :post_date %><br>
    <% #= f.date_select :post_date %>
    <%= f.text_field :post_date, :as => :string, :input_html => {:class => 'datepicker col-span-3'} %>
  </div>

  <div class="form-group">
    <%= f.label :image_file %><br>
    <%= f.text_area :image_file %>
  </div>

  <div class="form-group">
    <%= f.label :visible_title %><br>
    <%= f.text_area :visible_title %>
  </div>

  <div class="form-group">
    <%= f.label :meta_title %><br>
    <%= f.text_area :meta_title %>
  </div>

  <div class="form-group">
    <%= f.label :meta_description %><br>
    <%= f.text_area :meta_description %>
  </div>

  <div class="form-group">
    <%= f.label :meta_keywords %><br>
    <%= f.text_area :meta_keywords %>
  </div>

  <div class="form-group">
    <%= f.label :slug %><br>
    <%= f.text_area :slug %>
  </div>

  <div class="form-group">
    <%= f.label :partial_name %><br>
    <%= f.text_area :partial_name %>
  </div>

  <div class="form-group">
    <%= f.label :author %><br>
    <%= f.select :author, authors, { :selected => @post.author }, { :multiple => false} %>
  </div>

  <div class="form-group">
    <%= f.label :category %><br>
    <%= f.select :category, categories, { :selected => @post.category }, { :multiple => false} %>
  </div>

  <div class="form-group">
    <%= f.label :tags %><br>
    <%= f.select :tags, categories, { :selected => @post.tags }, { :multiple => true} %>
  </div>

  <div class="form-group">
    <%= f.label :public %><br>
    <%= f.check_box :public %>
  </div>
  <% [:en, :es, :fr].each do |lang| %>
    <h2><%= lang %> translation</h2>
    <% f.globalize_fields_for lang do |g| %>
      <% [:visible_title, :meta_description, :meta_keywords, :category, :slug, :meta_title].each do |field| %>
        <p><%= g.text_area field %></p>
      <% end %>
    <% end %>
    <hr/>
  <% end %>

  <h2>Spanish translation</h2>
   <% f.globalize_fields_for :es do |g| %>
     <p><%= g.text_field :visible_title %></p>
   <% end %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

上面的字段在html:中输出如下:

代码语言:javascript
复制
<h2>es translation</h2>
<input id="post_translations_attributes_2_id" name="post[translations_attributes][2][id]" type="hidden" value="">
<input id="post_translations_attributes_2_locale" name="post[translations_attributes][2][locale]" type="hidden" value="es">

...

<h2>Spanish translation</h2>
<input id="post_translations_attributes_2_id" name="post[translations_attributes][2][id]" type="hidden" value="">
<input id="post_translations_attributes_2_locale" name="post[translations_attributes][2][locale]" type="hidden" value="es">

My:

代码语言:javascript
复制
gem "friendly_id", "~> 5.0.1"
gem 'i18n', '~> 0.6.11'
gem 'globalize', '~> 4.0.2'
gem 'batch_translations', '~> 0.1.3' 

Post.rb:

代码语言:javascript
复制
class Post < ActiveRecord::Base
    translates :visible_title, :meta_description, :meta_keywords, :category, :slug, :meta_title

    #puts post.translations.inspect
    # => [#<Post::Translation id: 1, post_id: 1, locale: "en", title: "Globalize rocks!", name: "Globalize">,
      #<Post::Translation id: 2, post_id: 1, locale: "nl", title: '', name: nil>]

    extend FriendlyId 
    friendly_id :slug_candidates, use: [:slugged, :globalize]

    accepts_nested_attributes_for :translations

    # Try building a slug based on the following fields in
    # increasing order of specificity.
    def slug_candidates
      [
        :name
      ]
    end
end

我进行了迁移并运行它,并使用全球化gem创建了这个表。我从我的schema.rb文件:复制了这个

代码语言:javascript
复制
  create_table "post_translations", force: true do |t|
    t.integer  "post_id",          null: false
    t.string   "locale",           null: false
    t.datetime "created_at"
    t.datetime "updated_at"
    t.text     "visible_title"
    t.text     "meta_description"
    t.text     "meta_keywords"
    t.string   "category"
    t.text     "slug"
    t.text     "meta_title"
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 08:54:36

如果我是对的,这条线

代码语言:javascript
复制
<% f.globalize_fields_for lang do |g| %>

应该是这样

代码语言:javascript
复制
<%= f.globalize_fields_for lang do |g| %>

你缺少了=符号

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25352624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档