Mercury editor not saving default values

Need some help regarding mercury editor in rails.

I followed following tutorial to use mercury editor in my app

goo.gl/q960Ka

In above tutorial they wrote following lines in migration file before doing rake db:migrate

  Page.create(     title: 'Lorem ipsum',     content: 'Lorem ipsum....   )

which every-time update first entry with id="1" of table instead of creating new columns and then update it.

I use to set default value in migration table like

def change     create_table :pages do |t|       t.string :name       t.string :title => "test"       t.string :content => "test"       t.timestamps null: false     end   end end

When I use to edit default values mercury didn't save the values, instead I got this error message

NoMethodError (undefined method `' for nil:NilClass):   app/controllers/pages_controller.rb:9:in `save_page'

This is my controller file pages_controller,rb for save_page

  def save_page     page = Page.find(params[:id])     page.title = params[:content][:page_title][:value]     page.content = params[:content][:page_content][:value]     page.save!

    render text: ''   end

Please tell me how can I edit my default values and save that edited values in new entry instead of updating single entry everytime

You have not told us which is line 9 but presumably it is one of the above. Have a look in the log file to see what params is for the request and check that it has the contents referenced above (page_title and page_content and each of those has :value).

Colin

Yes, it worked I looked into log file and I found I forgot to add "id" element in some tags + passing wrong "id" elements in others. Somehow I'm able to make to it run but I encountered with another error. Error is like this

I followed Railscast mercury tutorial to set up future stuff like link for edit, saving edited content etc.

I'm able to edit but not able to save. I google alot but not able to find solution. Can please tell me where I'm doing wrong

mercury.js

$(window).bind('mercury:ready', function() {     var link = $('#mercury_iframe').contents().find('#edit_link');     Mercury.saveUrl = link.data('save-url');     link.hide(); });

$(window).on('mercury:saved', function() {    window.location.href = window.location.href.replace(/\/editor\//i, '/'); });

Error.

ActionController::RoutingError (No route matches [PUT] "/quotations/3/mercury_update"):   /home/deepak/.rvm/gems/ruby-2.2.0@global/gems/actionpack-4.2.0/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'   web-console (2.1.0) lib/web_console/middleware.rb:37:in `call'

So is the problem that it should not be using that url, that it should not be a PUT, or that the route is missing?

Colin

It should not using this url.

What have you got in routes.rb to provide the route?

Colin

route.rb

resources :pages do   member { post :mercury_update } end

pages_controller.rb

def mercury_update     page = Page.find(params[:id])     page.subject = params[:content][:page_subject][:value]     page.regard = params[:content][:page_regard][:value]     page.regardContent = params[:content][:page_regardContent][:value]     page.save!     render text: '' end

What have you got in routes.rb to provide the route?

route.rb

That is routes.rb I hope

resources :pages do   member { post :mercury_update } end

How does that provide the quotations route?

If you run rake routes you will see all the routes that defines.

Did you work right through a good tutorial such as railstutorial.org as I suggested you did a little time ago?

Also look at the rails guide on routing (and all the other guides actually).

Colin

Error Solved :slight_smile:

I used to solve error by changing method name in pages_controller.rb file.

s / def mercury_update / def update

def update     page = Page.find(params[:id])     page.subject = params[:content][:page_subject][:value]     page.save!     render text: '' end

Thanks for help.