While considering where I was going wrong with my Rails project, I figured that since I had the model and the views covered, I ought to give some consideration to the controller.
Then it occurred to me that the reason why no form elements were being shown on the new commission page was because I hadn’t created any! The standard scaffold controller action can be a little basic with show and edit completely blank.
But the ‘new’ controller does create an object and this is where the form elements com from. And in earlier tests, I had seen that I could use a build method to create the nested attributes. This should be easy.
Surely all my controller needs is:
def new @commission = Commission.new @commission.build_activity end
So why does that give me the following error:
undefined method `build_activity' for #<Commission:0x007f9e10be7020> Did you mean? build_commission_type
I can change the controller as suggested,
def new @commission = Commission.new @commission.build_commission_type end
And although the page loads, there are no form elements displayed. It’s wrong anyway, so I’m not bothered about that.
Perhaps the problem boils down to using a word that that plurals with ‘ies’ and that needs to be reflected in the appropriate places: sometimes singular sometimes, plural, other times pluralised. Sometimes errors, sometimes nothing.
This is the Rails way: everything’s a battle. Every step of the way.