2015-11-27 4 views
1

Очень надеюсь, что это действительно возможно, но я не могу показаться, чтобы получить доступ к своим параметрам формы для отправки с моей настраиваемого действияКак получить доступ к параметрам формы объекта в активном администратора

Моя цель здесь для пользователя, чтобы заполнить их формы, нажмите кнопку «Предварительный просмотр», которая покажет им, как будет выглядеть их сообщение, я создал представление, которое прекрасно, просто передача параметров является проблемой.

Это моя текущая форма

# Create Blog Post 
form do |f| 
    inputs 'Blog' do 
    f.semantic_errors 
    f.input :title 
    f.input :category_id, as: :select, collection: Category.all 
    f.input :comments, as: :text, input_html: { rows: 10, cols: 10 } 
    f.input :published, as: :boolean 
    end 
    inputs 'Submit' do 
    f.actions do 
    f.action :submit 
    f.action :cancel 
    f.action :reset 
    li do 
     link_to 'Preview', preview_my_admin_panel_posts_path(post: { title: "test", comments: 'comments', category_id: '1' }) # Hardcoded for now 
    end 
    end 
end 
end 

# Collection Action to handle object 
collection_action :preview, method: :get do 
    @post = Post.new(permitted_params[:post]) 
end 

Так со всем, так оно и есть (зашиты) в PARAMS передаются через и выход на мой взгляд предварительного просмотра, но как только я пытаюсь доступа формы/Params объекта ничто не прошло го

# Console Output 
1 - link_to 'Preview', preview_my_admin_panel_posts_path(post: { title: f.object.title, comments: f.object.comments, category_id: f.object.category_id}) 
#<Post:0x007f8bbe1fc4c0 id: nil, title: "", comments: "", category_id: nil, slug: nil, published: 0, created_at: nil, updated_at: nil> 
2 - link_to 'Preview', preview_my_admin_panel_posts_path(post: { title: f.title, comments: f.comments, category_id: f.category_id }) 
# Console Output 
#<Post:0x007f8bbe1fc4c0 id: nil, title: nil, comments: nil, category_id: nil, slug: nil, published: 0, created_at: nil, updated_at: nil> 
3 - link_to 'Preview', preview_my_admin_panel_posts_path(@post) 
# Console Output 
#<Post:0x007f8bbe1fc4c0 id: nil, title: nil, comments: nil, category_id: nil, slug: nil, published: 0, created_at: nil, updated_at: nil> 

не уверен, куда еще пойти с этим, f.object.param кажется близко, но проходя через пустые строки? Кто-нибудь делал это раньше ?

Если у кого-то есть альтернативное решение, хотелось бы услышать его.

Благодаря

Update

При выводе Params в консоли я получаю это возвращается

{"action"=>"preview", "controller"=>"my_admin_panel/posts"} 
+0

Это означает, что когда вы пытались вывести 'params' в свой' collection_action: preview', он пуст? Можно показать консольный журнал для этого действия? – nayiaw

+0

@nayiaw обновлено с консольными выходами – Richlewis

+0

больше интересует 'params' вместо' @ post' .. – nayiaw

ответ

0

Вы пытаетесь создать сообщение? Когда вы загружаете эту страницу, поля не имеют никакого значения, поэтому ссылка не будет загружать какой-либо параметр (вы можете проверить элемент в ссылке предварительного просмотра и увидеть, что ссылка не имеет никаких параметров).

Один из способов - использовать JavaScript, чтобы поймать значение до того, как ссылка маршрутизируется в контроллере.

+0

В рамках моего действия предварительного просмотра я делаю '@post = Post.new (permited_params [: post]) ', чтобы новый экземпляр @post был доступен, но не был сохранен. – Richlewis

+0

Я имею в виду, что при загрузке этой формы у вас нет данных, поэтому ваша '@ post' всегда равна нулю. Rails не знают, что введено в вашей форме, если это не кнопка отправки формы, 'link_to' не будет улавливать ваши данные формы. – nayiaw

Смежные вопросы