0

フォームを送信すると、次のエラーが表示されます: Missing template letsgos/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby]}.

私が理解していないのは、 create のビューが のときに /create を探している理由ですfrom _form.html.erb。/create ファイルを作成する必要はありません。ここで何か不足していますか?

letsgos_controller.rb:

  before_action :signed_in_user, only: [:create, :destroy]

  def create
    @letsgo = current_user.letsgos.build(letsgo_params)
    if @letsgo.save
      flash[:success] = "Date posted!"
      redirect_to root_url
end

  def destroy
    @letsgo.destroy
    redirect_to root_url
  end

ユーザーコントローラー:

def show
    @user = User.find(params[:id])
    @letsgos = @user.letsgos.paginate(page: params[:page])
    @letsgo = current_user.letsgos.build if signed_in?'
  end

letsgo.rb:

  belongs_to :user
  default_scope -> { order('created_at DESC') }
  validates :content, presence: true, length: { maximum: 360 }
  validates :tag, presence: true
  validates :user_id, presence: true
end

/users/show.html.erb:

<% if @user.letsgos.any? %>
    Dates (<%= @user.letsgos.count %>)
    <%= render @letsgos %>
    <%= will_paginate @letsgos %>
    <% end %>

/letsgos/_form.html.erb

<%= form_for(@letsgo) do |f| %>
    <div class="field">
        <%= f.text_area :content, placeholder: "Propose new date..." %>
        </div>
        <%= f.submit "Post", class: "btn btn-large btn-primary" %>
        <% end %>

/letsgos/home.html.erb:

<% if signed_in %>
    <% render 'letsgos/form' %>
4

1 に答える 1

2

内部letsgoes_controller.rbには、次の create メソッドがあります。

  def create
    @letsgo = current_user.letsgos.build(letsgo_params)
    if @letsgo.save
      flash[:success] = "Date posted!"
      redirect_to root_url
    end
  end

そのメソッドによれば、@letsgo.save が false を返した場合 (検証またはその他の理由により)、そのコードは実行されません。つまり、Rails はコントローラー アクションと同じ名前のビュー ファイルをレンダリングしようとしますcreate(この場合)。したがって、 の誤ったケースを説明する必要がありますif。次のようなものが機能します。

  def create
    @letsgo = current_user.letsgos.build(letsgo_params)
    if @letsgo.save
      flash[:success] = "Date posted!"
      redirect_to root_url
    else
      flash[:error] = "Date was not posted!"
      redirect_to root_url
    end
  end
于 2013-09-24T15:27:24.250 に答える