ActiveAdminをバックエンドとして使用しているRailsアプリケーションがあります。Active AdminはFormtasticを使用していますが、_form.html.erbの入力フィールドの1つを投稿に変換するのに問題があります。
これがフォームです...
<div class="container">
<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :author %>
<%= f.collection_select :blog_id, Blog.all, :id, :name, prompt: "Select a blog" %>
</div>
<div class="field">
<p>
Categories:<br>
<%= hidden_field_tag "post[category_ids][]", nil %>
<% Category.all.each do |category| %>
<%= check_box_tag "post[category_ids][]", category.id, @post.category_ids.include?(category.id), id: dom_id(category) %>
<%= label_tag dom_id(category), category.name %>
<% end %>
</p>
</div>
<div class="field">
<%= f.hidden_field :status, value: "Draft" %>
</div>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body, class: "redactor", id: "redactor" %>
</div>
<div class="field">
<%= f.label :published_on %><br />
<%= f.date_select :published_on %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</div>
これが私がformtastic固有のコードに変換するのに問題がある部分です。これは、 HABTMチェックボックスでのライアンのスクリーンキャストからのものです。
<div class="field">
<p>
Categories:<br>
<%= hidden_field_tag "post[category_ids][]", nil %>
<% Category.all.each do |category| %>
<%= check_box_tag "post[category_ids][]", category.id, @post.category_ids.include?(category.id), id: dom_id(category) %>
<%= label_tag dom_id(category), category.name %>
<% end %>
</p>
</div>
ActiveAdminのadmin/post.rbファイルにあるフォームコードは次のとおりです。これを使用すると、カテゴリのメソッドエラーが発生し続けます。私はそれが現在リストされている方法が間違っていることを知っています。
form do |f|
f.inputs "Details" do
f.input :blog, hint: "Select a blog"
f.input :title, hint: "Enter blog post title"
f.input :published_on, as: :date, include_blank: false, hint: "Select a date", :prompt => {:day => "Day", :month => "Month", :year => "Year"}, :start_year => Time.now.year
f.input :status, as: :select, collection: ["Draft", "Published"], include_blank: false, hint: 'Select "Draft" to save and post later, and "Publish" to post now'
f.input :categories, as: :check_boxes
f.input :body, input_html: { class: "redactor", id: "redactor" }
end
f.buttons
end
誰かが何か入力を持っているなら、私は最も感謝しています。私は素晴らしいドキュメントを見て、ライアンのスクリーンキャストを見ましたが、それでも変換に問題があります。
ありがとう!
編集:解決可能-以下の解決策
FormtasticとActiveAdminにもう少し慣れた後、この作業を行うことができました。以下は、Active Adminのフォーム、表示、およびインデックスビューの関連コードです。
ActiveAdmin.register Post do
index do
column "Post Title", :title
column :blog
column :published_on
column :status
column "Category", :categories do |post|
post.categories.collect { |cat| cat.name }.join(", ")
end
default_actions
end
show do
h5 "Created by #{post.blog.name} on #{post.created_at.strftime('%B %-d, %Y')}"
h5 "Categories: #{post.categories.collect { |cat| cat.name }.join(", ")}"
h5 "Current Status: #{post.status}"
h5 "Published On Date: #{post.published_on.strftime('%B %-d, %Y')} - (will only be posted if marked with Publish as status)"
div do
simple_format post.body
end
end
form do |f|
f.inputs "Details" do
f.input :blog, hint: "Select a blog"
f.input :title, hint: "Enter blog post title"
f.input :published_on, as: :date, include_blank: false, hint: "Select a date", :prompt => {:day => "Day", :month => "Month", :year => "Year"}, :start_year => Time.now.year
f.input :status, as: :select, collection: ["Draft", "Published"], include_blank: false, hint: 'Select "Draft" to save and post later, and "Publish" to post now'
f.input :categories, as: :check_boxes, collection: Category.all
f.input :body, input_html: { class: "redactor", id: "redactor" }
end
f.buttons
end
end