【发布时间】:2017-02-01 23:58:33
【问题描述】:
所以我将一个参数从一个视图发送到另一个控制器的视图
<%= render template: 'dishes/new', :id => @restaurant.id %>
这是我的另一个控制器视图:
def new
@dish = Dish.new
@id = params[:id]
end
def create
@dish = Dish.new(dish_params)
respond_to do |format|
if @dish.save
format.html { redirect_to @restaurant, notice: 'dish was successfully created.' }
format.json { render action: 'show', status: :created, location: :restaurant }
else
format.html { render action: 'show', location: :restaurant }
format.json { render json: @restaurant.errors, status: :unprocessable_entity }
end
end
end
private
def dish_params
params.require(:dish).permit( :avatar, :name, :description, [:id])
end
这是我对表单的看法:
#new.html.erb
<h1>Add a new dish</h1>
<%= render 'dishes/dish_form' %>
然后是表格:
<%= form_for @dish, :url => { :controller => "dishes", action_name => "create" } do |f| %>
<div class="field">
<%= f.label :dish_name %>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %>
<%= f.text_field :description %>
</div>
<div class="field">
<%= f.label :image %>
<%= f.file_field :avatar %>
</div>
<div class="actions">
<%= f.submit 'Add new dish' %>
</div>
<% end %>
【问题讨论】:
-
action
show在你的控制器中不存在 -
是的,我知道我稍后会解决这个问题,问题是进入那里,因为没有餐厅 ID
-
您在
create操作中调用@restaurant,但未定义@restaurant。 -
你没有得到我的问题:/,我意识到这个问题但现在不是我的问题,它缺少我在渲染中发送的 id
-
您能告诉我们,您在哪里定义了一个
@restaurant变量,以便在create操作上调用@restaurant?
标签: ruby-on-rails ruby controller render