1

ユーザーの連絡先のリストを印刷しており、ユーザーが各連絡先を「完了」としてマークできるようにしたいと考えています。(基本的に、やることリストからそれらをマークします)。

特定の連絡先の :done 属性を更新するにはどうすればよいですか?

これは、非表示フィールドが機能しないフォームです。

<% if current_user.contacts.any? %>
<% current_user.contacts.each do |c| %> 
    <li id="<%= c.id %>">
        <%= c.name %><br/>

        <%= form_for(@contact) do |f| %>
            <%= f.hidden_field :done, :value=>true %>
            <%= f.submit "Mark as done", class: "btn btn-small btn-link"%>
        <% end %>

    </li>
<% end %>

次のエラーが表示されます。

Template is missing Missing template contacts/create, application/create with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "C:/Sites/rails_projects/sample_app/app/views"

これは私の連絡先コントローラーです:

def create
  @contact = current_user.contacts.build(params[:contact])
  if @contact.save
    flash[:success] = "Contact saved!"
    redirect_to root_url
  else
    flash[:error] = "Something is wrong"
  end
end
4

1 に答える 1

1

何らかの理由で、おそらく検証規則が原因で、@contactオブジェクトを保存できません。この場合、else作成アクションのブランチは何をレンダリングするかを指定していないため、createテンプレートを探しています。新しいアクションが追加のデータをプリロードする必要がないと仮定すると、render :action => :newまたはに行を追加するだけでよい場合があります。redirect_to :action => :new

else
  flash[:error] = "Something is wrong"
  redirect_to :action => :new
end

エラーが見つかった場合にアクションrespond_withをレンダリングする明示的なリダイレクトの代わりに使用することもできます。new

def create
  @contact = current_user.contacts.build(params[:contact])
  if @contact.save
    flash[:success] = "Contact saved!"
  else
    flash[:error] = "Something is wrong"
  end
  respond_with @contact, :location => root_url
end
于 2012-11-07T21:31:06.373 に答える