2

私はRailsに非常に慣れていないので、どういうわけか奇妙な問題に直面しています.グーグルはこれまでのところ役に立ちませんでした...

Rails入門ガイドに従って古典的なCRUDリソースを実装しましたが、「更新」部分をブロックしています: http://guides.rubyonrails.org/getting_started.html#updating-articles

これは私のモデル「Devwork」の一部です:

class Devwork < ActiveRecord::Base
  validates :short_title, presence: true, uniqueness: true
  validates :title_fr, presence: true, allow_blank: false

  translates :title, :summary, :description
  globalize_accessors
end

ローカライズされたデータを永続化するためにGlobalize gem を使用し、ヘルパーにはGlobalize-accessorを使用しています。

コントローラーの更新アクションは次のとおりです。

class DevworksController < ApplicationController
  def update
    @devwork = Devwork.find(params[:id])

    if @devwork.update(devwork_params)
      redirect_to @devwork
    else
      render :edit
    end
  end

  private
  def devwork_params
    params.require(:devwork)
        .permit!
  end
end

フォームの一部:

<%= form_for @devwork do |f| %>
<p>
  <%= f.label :short_title %>
  <%= f.text_field :short_title %>
</p>
<p>
  <%= f.label :title_fr %>
  <%= f.text_field :title_fr %>
  <%= f.label :title_en %>
  <%= f.text_field :title_en %>
</p>
<p>
  <%= f.submit %>
</p>
<% end %>

short_title必須ではありませんが、必須ではないtitle_fr別のフィールドが存在しますtitle_en。更新が失敗した場合 (通常は empty が原因で)、更新フォームが再度表示されるようにしますtitle_fr

しかし、うまくいきません。が空render :editであっても更新が失敗することはありません (入力されません)。title_fr実際、フィールドの 1 つが空の場合、更新は何もせず、空でないフィールドのみを更新します。

確かにどこかで何かを見逃していましたが、それを理解できません...おそらく Globalize の誤用ですか?

ご協力いただきありがとうございます !

4

0 に答える 0