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