0

コントローラー: posts_controller.rb

def post_creator
    @post = Post.new
end

def create
    @post = Post.new(post_params)

    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, notice: 'Post was successfully created.' }
        format.json { render action: 'show', status: :created, location: @post }
      else
        format.html { render template: 'posts/post_creator' }
        format.json { render json: @post.errors, status: :unprocessable_entity }
      end
    end
end

モデル: post.rb

class Post < ActiveRecord::Base
  validates :content, :presence => true
end

ビュー: post_creator.html.erb

<%= 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 :name %><br>
    <%= f.select(:name, options_for_select([['Default', 'Default'],['Test', 'Test']]),{:include_blank => 'Select Post Type'}) %>
  </div>
  <div class="field">
    <%= f.label :content %><br>
    <%= f.text_area :content %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

質問:フォームが送信され、ユーザーが select タグから名前を「デフォルト」として選択し、コンテンツの入力に失敗した場合、検証は失敗し、post_creator.html.erb をレンダリングすると、以前に選択されていた名前が表示されます。が入力されていない場合は、[投稿タイプを選択] を選択します。私はこれが起こっているとは思いません。

どんな助けでも本当に感謝します。

ありがとう

4

1 に答える 1

1

これを試して

<%= f.select(:name, options_for_select([['Default', 'Default'],['Test', 'Test']], :selected => params[:post][:name]),{:include_blank => 'Select Post Type'}) %>
于 2013-10-25T05:58:18.393 に答える