我的代码:
def receive
@flick = Flick.new( flick_params )
if @flick.save
redirect_to root_path
else
redirect_to root_path, notice: "WTF"
end
end
def show
end
出于某种原因,当我拨打http://localhost:3000/flicks/receive?user_id=asdadasd
而不是将我重定向到show动作并且什么都不做时,它不会创建轻弹。不知道为什么会这样。
谢谢!
答案 0 :(得分:2)
如果接收操作是post方法,则必须指定要在创建表单中发布的方法。它应该是这样的,
<%= form_for @flick, method: :post do |f| %>
<% end %>
试试这个,它应该有效。
答案 1 :(得分:2)
http://localhost:3000/flicks/receive?user_id=asdadasd
这是GET
网址
如果您必须将user_id
作为附加网址参数包含在内,我强烈建议您使用devise
或sessions
之类的内容为您提供方法跟踪user_id
,以便您可以直接在控制器中访问它。不通过网址
<强>表格强>
关于你的问题,你需要记住Rails不会为了它而加载show
动作。您将遇到导致此问题的问题
我怀疑您在method: :get
中使用form
(正如Mohanraj
所建议的那样)。这是一个问题,您的show
和create
方法属于同一个routing resource
:
GET /photos photos#index display a list of all photos
GET /photos/new photos#new return an HTML form for creating a new photo
POST /photos photos#create create a new photo
GET /photos/:id photos#show display a specific photo
GET /photos/:id/edit photos#edit return an HTML form for editing a photo
PATCH/PUT /photos/:id photos#update update a specific photo
DELETE /photos/:id photos#destroy delete a specific photo
这意味着如果您使用GET
请求提交表单,那么您将获得show
操作
<强>修正强>
我建议您尝试Mohanraj
提供的答案:
<%= form_for @var do |f| %> #-> this will default to POST
<% end %>