f.send in form?

Can you do f.send in a form? I have questions and the data type stored in a db.

<% Question.all.each do |question| %>

<%= f.send(:label, question.name), :class => ‘control-label’ %>

<%= f.send(question.data_type.to_sym, :question, :name) %> - <%= ’ allergic to shellfish?’ %>

<% end %>

Of course! Are you encountering any problems with that?

Dheeraj Kumar

Is there something I need to do to the data_type to make it recognize it as a method?
wrong number of arguments (3 for 0)
<div class="control-group">
48: <%= f.label question.name.to_sym, :class => 'control-label' %>
49: <div class="controls">
50: <%= question.data_type "person[person_question_ids][]", [question.id](http://question.id), nil %> - <%= ' allergic to shellfish?' %>
51: </div>
52: </div>

You can access the object by using


then you can do


here ‘f.object’ return an instance of Question, but i think that whatever you are trying to do you are doing it wrong, can you elaborate in what you are trying to do?

Wait, what? You posted the correct code in your original post, but this isn’t that code. Line 50 here is saying, “call the data_type method on the question object with these three parameters”. The generated accessor doesn’t understand the parameters, and you get the error.

If you want to call a method whose name is selected at runtime, you need to use send.

–Matt Jones

Been a while, I had the closing bracket in the wrong spot:

send needs all the params, it was erroring on , if i put the closing bracket right after the data_type or name

<%= person_question.send(question.data_type.to_sym, question.name, :class => ‘text_field’) %>