【发布时间】:2011-06-21 21:56:26
【问题描述】:
我刚开始学习 Rails。我的 Rails 版本是 3.0.7。我想知道 和 有什么区别。我有这个问题是因为我遇到了以下情况:
如果我使用 ,它不会给我一个错误,但表单实际上不起作用。
如果我使用 ,我会得到一个错误:undefined method `project_profile_path' for #
如果我使用 url => "/projects/#{params[:project_id]}/profile/update" 做 |f| %>,它会工作,但代码很难看。
您可以参考以下代码更好地了解我的问题的上下文。
我有一个项目模型和一个 project_profile 模型。一个项目有一个 project_profile。
以下两行来自我的routes.rb。
match '/projects/:project_id/profile/edit' => "project_profiles#edit"
match '/projects/:project_id/profile/update' => "project_profiles#update"
这是来自我的 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 %>
【问题讨论】:
标签: ruby-on-rails forms routing