On 13 Aug 2010, at 05:01, Wes Gamble wrote:

> On 8/12/10 6:47 PM, William Ross wrote:
>> 
>> On 13 Aug 2010, at 00:35, Wes Gamble wrote:
>>> 
>>> After looking into it, though, I see the admin/users/edit and 
>>> admin/users/index views under the Radiant core are more or less hard-coded 
>>> at the column level, but the error messages imply that I should be able to 
>>> add a partial somewhere for my custom fields.
>>> 
>>> Questions:
>>> 
>>> What is the preferred way to customize at this level?  
>> 
>> You're on the right lines, though I would normally use this kind of idiom to 
>> get more control:
>> 
>>  admin.users.edit.add
>>             :form, "edit_program", :after => "something"
>>  
>> and
>>           then you need to create the partial, which in this case would
>>           be
>>  
>>   
>> vendor/extensions/your_extension/app/views/admin/users/_edit_program.html.haml
>> 
> I did this, and created a file in the correct place, and entered the 
> following in my "activate" method:
> 
>   admin.users.edit.add :form, "edit_program", :after => "edit_roles"
> 
> My partial looks like this:
> 
> - form.edit_program do
>   %p
>     = f.label :program_id, t('program'), :class => "optional"
>     = f.select :program_id, Program.all.collect {|p| [p.name, p.id]}
> 
> and I get the classic 
> 
> " wrong number of arguments (0 for 1)"
> 
> message when I try to render the form.  This is because, AFAIK, the partial 
> hasn't been passed the "form" variable as a local.


No, you're right, and I've never found the right answer for that. The only way 
I know to use FormBuilder methods is to wrap a fields_for around the partial:

        - fields_for :user, @user do |ff|
            = ff.label :program_id, t('program'), :class => "optional"
            = ff.select :program_id, Program.all.collect {|p| [p.name, p.id]}

which isn't very helpful when you're trying to reuse a bit of form, but it does 
work.

will

Reply via email to