Forum: Ruby on Rails f.send in form?

Posted by Chris Habgood (chabgood)
on 2012-07-31 00:02
(Received via mailing list)
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 %>
Posted by Dheeraj Kumar (Guest)
on 2012-07-31 04:19
(Received via mailing list)
Of course! Are you encountering any problems with that?


Dheeraj Kumar
Posted by Chris Habgood (chabgood)
on 2012-07-31 05:27
(Received via mailing list)
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
*
Posted by Radhames Brito (rbritom)
on 2012-07-31 08:00
(Received via mailing list)
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?
Posted by Matt Jones (Guest)
on 2012-07-31 13:58
(Received via mailing list)
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
Posted by Chris Habgood (chabgood)
on 2012-09-29 00:26
(Received via mailing list)
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
No account? Register here.