Ruby on rails Rails链接到和提交参数
例如 我做了一个脚手架工程Ruby on rails Rails链接到和提交参数,ruby-on-rails,Ruby On Rails,例如 我做了一个脚手架工程 rails generate scaffold Post name:string title:string content:text 如果我去 localhost:3000/posts 它显示了这样的视图 <h1>Listing posts</h1> <table> <tr> <th>Name</th> <th>Title</th> <
rails generate scaffold Post name:string title:string content:text
如果我去
localhost:3000/posts
它显示了这样的视图
<h1>Listing posts</h1>
<table>
<tr>
<th>Name</th>
<th>Title</th>
<th>Content</th>
<th></th>
<th></th>
<th></th>
</tr>
<% @posts.each do |post| %>
<tr>
<td><%= post.name %></td>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Post', new_post_path %>
如果是这样,如果我想调用这个方法。操作是否必须是posts/create
伙计……Rails对新手来说太难了,api文档也太麻烦了:(问题:“我不理解第二个参数,比如post,edit\u post\u path,这类东西。”
回答:edit\u post\u path
是编辑您的帖子资源的路径。它将引用当前帖子作为参数,以便它知道您要编辑的帖子
RubyonRails为您的所有资源创建restful路由,因此当您围绕Post模型生成脚手架时,您可以自动地获得索引、编辑、显示和新路由
您可能想看看这一点,这将使您更好地了解路由是如何工作的
至于你的其他问题,你真的应该像塔默指出的那样把它们分成单独的帖子,以更好地适应StackOverflow的问答形式
<td><%= link_to 'Show', post %></td>
同样,edit\u post\u path
是Rails在routes.rb
文件中放置resources:posts
时自动生成的方法。调用该方法时,它返回编辑post
对象的URL
destroy链接与此略有不同。在Rails中,您不能使用GET链接删除资源。当您告诉link\u to
您要删除的内容时,它实际上会在页面上创建一个隐藏表单,提交删除请求(这不是真正的删除请求,因为您无法从浏览器发出该请求;相反,它是一个带有方法=\u DELETE
作为参数的帖子),当您单击呈现的链接时,框架JavaScript将提交该隐藏表单
键入rake routes
,查看Rails从routes.rb.rb文件中生成的所有路由,并根据建议,阅读Rails路由的一般内容以及其他内容
关于你的第二个问题
<%= form_for(@post) do |f| %>
同样,这是一个静止的东西。Rails将询问对象是否是新记录。如果是,它知道使用指向索引操作的post
方法呈现form
标记;否则,它将使用指向对象URL的put
方法呈现form
标记。e问题,请分开张贴,不要在同一个问题中。
<form accept-charset="UTF-8" action="/posts" class="new_post" id="new_post" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="5d3i4uFDrhq+qenAWLbBxWqaA6rJAKrPedVIO04NK6o="></div>
<div class="field">
<label for="post_name">Name</label><br>
<input id="post_name" name="post[name]" size="30" type="text">
</div>
<div class="field">
<label for="post_title">Title</label><br>
<input id="post_title" name="post[title]" size="30" type="text">
</div>
<div class="field">
<label for="post_content">Content</label><br>
<textarea cols="40" id="post_content" name="post[content]" rows="20"></textarea>
</div>
<div class="actions">
<input name="commit" type="submit" value="Create Post">
</div>
</form>
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render json: @post, status: :created, location: @post }
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<%= form_for(@post) do |f| %>