Can you do f.send in a form? I have questions and the data type stored
in
a db.
<% Question.all.each do |question| %>
<div class="control-group">
<%= f.send(:label, question.name), :class => 'control-label'
%>
<div class="controls">
<%= f.send(question.data_type.to_sym, :question, :name) %>
-
<%= ' allergic to shellfish?' %>
</div>
</div>
<% end %>
on 2012-07-31 00:02
on 2012-07-31 05:27
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, nil %> - <%= ' allergic to shellfish?' %> 51: </div> 52: </div> On Mon, Jul 30, 2012 at 9:17 PM, Dheeraj Kumar <a.dheeraj.kumar@gmail.com>wrote: > <% Question.all.each do |question| %> > > > > -- *"In matters of style, swim with the current; in matters of principle, stand like a rock." Thomas Jefferson *
on 2012-07-31 08:00
You can access the object by using f.object then you can do f.object.send 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?
on 2012-07-31 13:58
On Monday, 30 July 2012 23:25:45 UTC-4, Me wrote: > 52: </div> > > > > 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
on 2012-09-29 00:26
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') %>
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.