我正在尝试在Rails 4中创建一个应用程序。
我有一篇文章模型。
显示页面包含一个按钮,该按钮应该是编辑(更新)方法的链接。
我有:
<%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %>
当我尝试这个时,我收到了这个错误:
文章中的NameError#show 显示//app/views/articles/show.html.erb第49行:
未定义的局部变量或方法`article'for#&lt;#:0x007fe14dc83030&gt;
第49行有要编辑的按钮。
有人能看出什么问题吗?
我的展示页面有:
<div class="col-xs-2">
<%= image_tag @article.image.thumb.url if @article.image? %>
</div>
<div class="col-xs-10">
<div class="articletitle">
<%= @article.title %>
</div>
<div class="commentattributionname">
<%= @article.user.try(:full_name) %>
</div>
<div class="commentattributiontitle">
<%= @article.user.try(:formal_title) %>
</div>
<div class="commentattributiondate">
<%= @article.created_at.try(:strftime, '%e %B %Y') %>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-9">
<div class="intpol3" style="text-align: left; margin-left:60px; padding-top:50px">
<%= safe_join(@article.body.split("\r\n"), "<br />".html_safe) %>
</div>
</div>
<div class="col-sm-3">
<!-- placeholder for tags -->
</div>
</div>
<!-- if @article.user.full_name.present? -->
<!-- <div class="indexsubtext"> @article.user.full_name </div> -->
<!-- end -->
<div class="row">
<div class="col-xs-8">
</div>
<div class="col-xs-4">
<div class="formminor" style="margin-bottom:5%">
<% if policy(@article).update? %>
<%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %>
<% end %>
|
<%= link_to 'More from the blog', articles_path %>
</div>
</div>
</div>
我的文章控制器有:
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
def set_article
@article = Article.find(params[:id])
authorize @article
end
我的路线有:
resources :articles do
collection do
get 'search'
end
resources :comments, module: :articles
end
如果我将其更改为:
<%= button_to 'Edit', articles_path(article), :method => :update, :class => 'btn btn-large btn-primary' %>
我收到此错误:
ActionController::ParameterMissing in ArticlesController#create
param is missing or the value is empty: article
我的控制器有:
def create
# before_action :authenticate_user!
# authorize @article
@article = current_user.articles.new(article_params)
respond_to do |format|
if @article.save
format.html { redirect_to(@article) }
format.json { render :show, status: :created, location: @article }
else
format.html { render :new }
format.json { render json: @article.errors, status: :unprocessable_entity }
end
end
end
def article_params
params.require(:article).permit(:body, :title, :image, :tag_list,
comment_attributes: [:opinion])
end
采取TAGLIA的建议
我收到此错误:
ActionController::ParameterMissing in ArticlesController#create
param is missing or the value is empty: article
答案 0 :(得分:0)
这意味着您尚未在控制器中的任何位置定义Error:(124, 143) type mismatch;
found: scala.collection.immutable.List[scala.collection.mutable.MutableList[String]]
required: scala.collection.immutable.List[java.util.List[String]]
。您需要在文章展示操作中定义变量article
或类似内容,这样您才能找到所需的文章。
答案 1 :(得分:0)
如果您使用resources :articles
生成文章的路线,则rails会为您提供访问编辑操作的特定帮助程序。这应该有效:
<%= button_to 'Edit', edit_article_path(@article), :class => 'btn btn-large btn-primary', method: :get %>
您的代码有两个问题:
articles_path
是一个帮助器,它生成索引操作的路径,不需要任何参数;