dynamically generate fields in view

Hello, what would be the best way to solve this?

I have a view where I want users to be able to enter the score of a tennis match. The number of sets to be played is determined from a column in a database table. Each sports club, when set up, can set the total number of sets to be played in a match...5, 3, 1...whatever.

This number will determine how many text boxes are displayed for the user to enter the score. The match model has only one column for score, so before the score is saved in the database it must be created as follows

final_score = set_1 + set_2 + set_3 (for a match in which 3 sets must be played)

I think maybe using virtual attributes is the way to go, but I am not sure how to implement it.


if you name each of your (game)set input fields something like "set" then rails will parse the parameters as an array. This way you will give you a params hash like:

{ 'match' => { 'sets' => ['1','3','7']} }

This means in your model you can define a virtual attribute called 'sets' like:

def sets= scores    self.score = scores.map(&:to_i).sum end

Thanks! I will try that. Also, would it be possible to add validations in the model for each of the sets?

I don't think you can use rails' standard 'valtidates' methods, like validates_presence_of, but you can add your own custom validate method to your model:

def validate   self.errors.add(:sets, 'are invalid') unless <your validation code