我有一张表格来创建新的"农场"在views / users / show.html.erb中(因为农场没有自己的观点):
<div id="add">
<%= form_for(:farm, :url => {:action => :create}) do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.label :region %><br />
<%= f.text_field :region %>
<%= f.label :north %><br />
<%= f.text_field :north %>
<%= f.label :east %><br />
<%= f.text_field :east %>
<%= f.label :description %><br />
<%= f.text_area :description, rows: "6" %><br />
<%= f.label :categories %><br />
<%= f.text_area :categories, rows: "1" %><br />
<%= f.label :products %><br />
<%= f.text_area :products, rows: "2" %><br />
<%= f.submit "Vstavi" %>
<% end %>
</div>
farms_controller发出创建操作:
class FarmsController < ApplicationController
before_filter :authenticate
def create
@farm = current_user.farms.build(params[:farm])
if @farm.save
flash[:success] = "Farm created!"
redirect_to 'users/show'
else
render 'users/show'
end
end
end
当然,当我尝试在视图中创建一个新的农场时:
缺少模板
缺少模板用户/创建{{handlers =&gt; [:erb,:rjs,:builder,:rhtml,:rxml],:formats =&gt; [:html],:locale =&gt; [:en,:en]}在视图路径&#34; / media / rok / LOCAL DISC / Users / Koko / Documents / KMETIJE / kmetije / app / views&#34;
然后我也将create动作添加到users_controller,但我显然做错了:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@farms = @user.farms.paginate(:page => params[:page])
end
def new
@user = User.new
end
def create
Farm.create
redirect_to :action => :show
end
end
我应该也可以显示我的路线文件:
Kmetije::Application.routes.draw do |map|
resources :users
resources :sessions, :only => [:new, :create, :destroy]
resources :farms, :only => [:create, :destroy]
root :to => 'pages#home'
match '/home', :to => 'pages#home', as: 'home'
match '/info', :to => 'pages#info', as: 'info'
match '/signin', :to => 'sessions#new', as: 'signin'
match '/users/1', :to => 'users#show', as: 'user'
match '/signout', :to => 'pages#home', as: 'signout'
end
感谢您的时间。
答案 0 :(得分:0)
这是为了提交给users / create,因为你没有指定一个控制器,只是一个动作。
<%= form_for(:farm, :url => {:action => :create}) do |f| %>
由于您在呈现此页面时处于用户控制器操作中,因此默认为当前控制器,即用户。试试这个
<%= form_for(:farm, :url => farms_path) do |f| %>
farms_path
基本上是&#34; / farms&#34;,此路径的POST与&#39;创建&#39;相关联。行动。 (路线中的resources :farms
行设置了这个)
然后它应该提交给#counc创建农场,这就是你期望它首先做的事情。