Prithviraj Sukale
Prithviraj Sukale

Reputation: 149

create creates empty objects

I am trying to render markdown in :body before saving to database . here 's my create method

def create

@post=current_user.posts.create(:title => params[:title],:body => markdown(params[:body])    
redirect_to(post_path(@post))
end

and here is my render markdown method

def markdown(text)
options = {
  filter_html:     true,
  hard_wrap:       true,
  link_attributes: { rel: 'nofollow', target: "_blank" },
  space_after_headers: true,
  fenced_code_blocks: true
}

extensions = {
  autolink:           true,
  superscript:        true,
  disable_indented_code_blocks: true
}

renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)

markdown.render(text).html_safe
end

but when I enter data and submit empty objects are genearated.

irb(main):001:0> Post.last
Post Load (0.1ms)  SELECT  "posts".* FROM "posts" ORDER BY 
"posts"."id" DESC LIMIT ?  [["LIMIT", 1]]
=> #<Post id: 7, title: nil, body: nil, created_at: "2017-04-26 
11:23:12", updated_at: "2017-04-26 11:23:12", user_id: 1>

my form :-

= simple_form_for @post do |f|
 =f.input :title 
 =f.input :body
 =f.button :submit

Upvotes: 0

Views: 244

Answers (1)

Babar Al-Amin
Babar Al-Amin

Reputation: 3984

It should be like this:

@post=current_user.posts.create(:title => params[:post][:title],:body => markdown(params[:post][:body])    

Also you probably would like to check Rails StrongParam for enhanced security.

Upvotes: 1

Related Questions