2016-08-21 3 views
0

Я пишу блог по уценке, и я хочу использовать передний элемент для определения метаданных, таких как заголовки сообщений. Этот фронт-элемент является частью поля уценки и анализируется в действии создания контроллера. Проблема, с которой я сталкиваюсь, заключается в том, что мой контроллер отказывается сохранять измененные атрибуты. Я попытался переместить это в модельный метод с before_actions, который не сработал. У меня также read this question и пробовал метод attribute_will_change! в моей модели без успеха. У меня нет идей, поэтому любая помощь будет оценена.Рельсы, не сохраняющие измененные атрибуты

  • По какой-то причине, public атрибут в сохраняется как ожидается, но остальное не так.
  • убедились, что переменная фм содержит значения (работает безотказно)
  • пытался двигаться это в модель before_save действия
  • Я также попытался удалить ||= и заменить их с регулярными = назначения.

Сообщение Контроллер Создать

def create 
    @post = Post.new(post_params) 
    @post.public = true 
    @post.user = User.first 
    @post.word_count = @post.markdown.scan(/[\w-]+/).size 
    fm, content = YAML::FrontMatter.extract(@post.markdown) 

    @post.title_will_change! 
    @post.title ||= fm[:title].to_s 
    @post.subtitle ||= fm[:subtitle] 
    @post.abstract ||= fm[:abstract] 
    @post.video_token ||= fm[:video_token] 
    @post.slug ||= fm[:slug] 
    @post.seo_keywords = fm[:seo_keywords] 

    if @post.image 
     @post.image_id = fm[:image] 
    end 

    cat = Category.find_by_name(fm[:category]) 
    if cat.present? 
     @post.category = cat 
    else 
     @post.category = Category.create(name: fm[:category]) 
    end 

    new_markdown = @post.markdown.gsub(/(---\n(?:.*: '.*'\n)*---)/, '') 
    @post.markdown = new_markdown 
    respond_to do |format| 
     if @post.save 
      format.html { redirect_to @post, notice: 'Post was successfully created.' } 
      format.json { render :show, status: :created, locataion: @post } 
     else 
      format.html { render :new } 
      format.json { render json: @post.errors, status: :unprocessable_entity } 
     end 
    end 
end 

ответ

0

Я получил доступ к переменной fm с символом, а не строку ... Это был вопрос. Очень надоедливый.

Смежные вопросы