Ruby on rails 惯用的Rails方式放置micropost';s文本框和提交按钮,避免使用;渲染';表格'&引用;脚手架代码?
我今天一直在尝试Ruby+Rails 在创建了标准的Ruby on rails 惯用的Rails方式放置micropost';s文本框和提交按钮,避免使用;渲染';表格'&引用;脚手架代码?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我今天一直在尝试Ruby+Rails 在创建了标准的User和Micropost模型、视图和控制器之后,我想添加一个页面,作为用户,可以添加一个新的Micropost 到目前为止,由于确实没有进行身份验证,我很高兴有一个页面,可以通过url获取用户id,在表单中只有一个文本框,可以在其中键入要添加到站点的micropost 我已经连接了所需的路由: match 'users/new_micropost/:user_id' => 'Users#new_micropost' 以及控制器的代码
User
和Micropost
模型、视图和控制器之后,我想添加一个页面,作为用户,可以添加一个新的Micropost
到目前为止,由于确实没有进行身份验证,我很高兴有一个页面,可以通过url获取用户id,在表单中只有一个文本框,可以在其中键入要添加到站点的micropost
我已经连接了所需的路由:
match 'users/new_micropost/:user_id' => 'Users#new_micropost'
以及控制器的代码:
def new_micropost
@user = User.find(params[:user_id])
@micropost = Micropost.new #still not so sure about this
end
我已将粘贴的microspost/new.html.erb
文件复制到名为users/new_microspost.html.erb
的新文件中:
<h1>New <%= @user.name %>'s micropost</h1> #added this thingy
<%= render 'form' %>
<%= link_to 'Back', users_path %>
New的micropost添加了这个东西
替换
的惯用方法是只打印一个文本框,询问我想在网站上发布的微博客加上提交按钮,那么最好的替换方法是什么
感谢在Rails中,控制器有7个标准操作,与资源的创建、读取、更新和删除相关。如果您能将MicropostsController的操作命名为新的,那就太好了。您可以使用tag的
form_创建一个文本区域以及一对提交和取消按钮。
例如:
<%= form_for @micropost do |f| %>
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %>
在Rails中,控制器有7个标准动作,与资源的创建、读取、更新和删除相关。如果您能将MicropostsController的操作命名为新的,那就太好了。您可以使用
tag的form_创建一个文本区域以及一对提交和取消按钮。
例如:
<%= form_for @micropost do |f| %>
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %>
对于表单,只需创建您自己的,传入@micropost
变量,类似于:
<%= form_for @micropost do |f| %>
<%= f.text_area :body, :size => "60x12" %>
<%= f.submit "Post" %>
<% end %>
def new_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build
end
def create_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
redirect_to some_path
else
render 'new_micropost'
end
end
然后,您可以将新操作和创建操作更改为:
<%= form_for @micropost do |f| %>
<%= f.text_area :body, :size => "60x12" %>
<%= f.submit "Post" %>
<% end %>
def new_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build
end
def create_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
redirect_to some_path
else
render 'new_micropost'
end
end
请注意,您可能需要更新表单以提交到正确的控制器:
对于表单,只需创建自己的表单,并传入@micropost
变量,类似于:
<%= form_for @micropost do |f| %>
<%= f.text_area :body, :size => "60x12" %>
<%= f.submit "Post" %>
<% end %>
def new_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build
end
def create_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
redirect_to some_path
else
render 'new_micropost'
end
end
然后,您可以将新操作和创建操作更改为:
<%= form_for @micropost do |f| %>
<%= f.text_area :body, :size => "60x12" %>
<%= f.submit "Post" %>
<% end %>
def new_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build
end
def create_micropost
@user = User.find(params[:user_id])
@micropost = @user.microposts.build(params[:micropost])
if @micropost.save
redirect_to some_path
else
render 'new_micropost'
end
end
请注意,您可能需要更新表单以提交到正确的控制器:
我已经使用了rails生成器。用户和Micropost都是这样创建的。然后在localhost:3000/microposts/new
上生成了一个表单。我已经使用了rails生成器。用户和Micropost都是这样创建的。然后在localhost:3000/microposts/new
上生成一个表单?