私は今、レールを学び始めました。私のレールのバージョンは3.0.7です。 <%form_for:project_profile%>と<%form_for @project_profile%>の違いは何ですか?私はのform_for <%を使用する場合はform_for @project_profileとform_forの違いは何ですか?project_profile
:project_profile%>、それは私にエラーを与えるものではありませんが、フォームが実際に機能していない私は、次のような状況に入ったので、私はこの質問を持っています。
私は<%のform_for @project_profile%>を使用している場合は、私はエラーを取得します:私は<% =のform_for @project_profileを使用する場合は0x00000103546d80>
:#<#のための未定義のメソッド `project_profile_path」を、:url => "/ projects /#{params [:project_id]}/profile/update" do | f | %>、それは動作しますが、コードは醜いです。
あなたはより良い私の問題の背景を理解するために以下のコードを参照することができます。
私はプロジェクトモデルとproject_profileモデルを持っています。 1つのプロジェクトに1つのproject_profileがあります。
次の2行は、routes.rbです。
match '/projects/:project_id/profile/edit' => "project_profiles#edit"
match '/projects/:project_id/profile/update' => "project_profiles#update"
@project_profileは(高度でのform_forこれは私のproject_profiles_controller.rb
class ProjectProfilesController < ApplicationController
def edit
@project_profile = Project.find(params[:project_id]).project_profile
end
def update
@project_profile = Project.find(params[:project_id]).project_profile
respond_to do |format|
if @project_profile.update_attributes(params[:project_profile])
format.html {}
else
format.html { render :action => "edit" }
end
end
end
end
から次のコードは、_form.html.erb基本的に話さ
<%= form_for @project_profile, :url => "/projects/#{params[:project_id]}/profile/update" do |f| %>
<div class="field">
<%= f.label :title %>
<br/>
<%= f.text_field :title %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
私のコントローラが従来のものではないことを知っていて良かったです。大会に続いて私は進歩を助けました。 – ffmaer