我有两个模型,Chef
和Recipe
。现在,我的应用程序中的create
函数无效,即使已经定义了函数create
,它也没有将我重定向到任何地方,当我移动光标时它也没有显示任何链接我的应用程序中的按钮。
我的代码:
/controllers/recipes_controller.rb
class RecipesController < ApplicationController
def index
@recipes=Recipe.all
end
def show
@recipe=Recipe.find(params[:id])
end
def new
@recipe=Recipe.new
end
def create
@recipe=Recipe.new(recipe_params)
if @recipe.save
flash[:notice] = "Your Recipe was created successfully ! "
redirect_to recipes_path
else
render :new
end
end
def edit
@recipe=Recipe.find(params[:id])
end
def update
@recipe=Recipe.find(params[:id])
if @recipe.update!(recipe_params)
#do something
flash[:notice]= "Your Recipe was updated Successfully"
redirect_to recipe_path(@recipe)
else
render :edit
end
end
private
def recipe_params
params.require(:recipe).permit(:name, :summary, :description, :picture)
end
end
/views/recipes/_form.html.erb
<p>
<h1>create a new recipe</h1>
</p>
<div class="row">
<div class="well col-md-8 col-md-offset-2>
<%= form_for @recipe do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :summary %>
<%= f.text_field :summary %>
<%= f.label :description %>
<%= f.text_area :description, rows: 10 %>
<%= f.button :submit ,input_html: { class: "btn btn-success" } %>
<% end %>
</div>
</div>
/models/recipe.rb
class Recipe < ApplicationRecord
belongs_to :chef
validates :chef_id, presence: true
validates :name, presence: true, length: { minimum: 5, maximum: 100}
validates :summary, presence: true, length: { minimum: 10, maximum: 150}
validates :description, presence: true, length: { minimum: 20, maximum: 500}
end
/models/chef.rb
class Chef < ApplicationRecord
has_many :recipes
has_many :likes
before_save { self.email = email.downcase}
validates :chefname, presence: true, length: { minimum: 3, maximum: 40}
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: {maximum: 105}, uniqueness: {case_sensitive: false}, format: {with: VALID_EMAIL_REGEX}
端
/config/routes.rb
get 'pages/home'
root 'pages#home'
resources :recipes
end
/assets/javascript/application.js
//= require bootstrap-sprockets
//= require rails-ujs
//= require turbolinks
//= require_tree .
Ps: - 最近阅读了一篇文章,其中说由于 jquery 在页面上重新加载两次而导致问题可能存在。
感谢您的帮助!
答案 0 :(得分:0)
这不是jquery错误
Rails使用与die "Must run on MoarVM, not $*VM.name()" unless $*VM.name eq 'moar';
协议一起使用的ujs
上的remote links
,而不是简单的ajax
链接。
创建HTTP
关系后,它停止了工作?
似乎您的控制器尚未准备好接收chef
,而且它是chef_id
。
此外,您的表单似乎没有准备好在html上显示此错误,因此请检查您的终端日志,您的验证错误将打印在其上。
编辑。我会尝试更好地解释造成错误的原因。
创建required field
关系后,您的belongs_to: chef
需要与某些recipe
相关联。您可能对您的应用说,chef
有很多chef
,并且recipes
在没有recipe
的情况下无法存在。
在您的控制器上,您创建的chef
没有recipe
。
chef
是用户,而您正在使用chef
gem?