我想我需要用户:通过我的协会中的某个地方,但我对此非常新,所以任何帮助都会受到赞赏。
为简单起见,假设我有3个模型。
Faults
Users
FaultComments
其中
Faults - belong_to :user and has_many :fault_comments
Users - has_many :faults and has_many :fault_comments
FaultComments - belongs_to :fault and belongs_to: user
我想要做的是能够从故障显示页面添加故障评论,目前我有以下但我不能让它全部按预期工作。
的routes.rb
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
resources :faults
resources :fault_comments
视图/错误/ show.html.erb
<h3>Add New</h3>
<%= form_for @faultcomment, :url => fault_comments_path(:fault_id => @fault.id, :user_id => current_user.id) do |f| %>
<%= f.text_field :comment %>
<%= f.submit %>
<% end %>
控制器/ faults_comments_controller.rb
def create
@fault = Fault.find(params[:fault_id])
@faultcomment = @fault.fault_comments.new(params[:faultcomment])
@faultcomment.user_id = params[:user_id]
@faultcomment.comment = :comment
if @faultcomment.save
redirect_to faults_path
end
end
答案 0 :(得分:0)
首先,我认为您可能应该离开FaultCommentsController
,就像这样:
def create
@fault_comment = FaultComment.new(params[:fault_comment])
@fault_comment.user = current_user
if @fault_comment.save
redirect_to faults_path
end
end
(作为旁注,了解CamelCase和snake_case以及如何在两者之间正确转换可能是值得的。FaultComment
的snake_case推论是fault_comment
,而不是{{ 1}}。如果你不明白这一点,肯定会遇到问题。)
faultcomment
上的表单看起来或多或少对我而言。如果您将控制器更改回原件,它是否有效?
另外,更改您的表单:
views/faults/show.html.erb